1
0
mirror of https://github.com/ciromattia/kcc synced 2025-12-21 21:51:52 +00:00

Fill detection improvements

This commit is contained in:
Paweł Jastrzębski
2013-09-16 11:20:42 +02:00
parent 74add23c14
commit 1085673010
2 changed files with 25 additions and 13 deletions

View File

@@ -292,9 +292,9 @@ def applyImgOptimization(img, options, overrideQuality=5):
img.cutPageNumber() img.cutPageNumber()
img.optimizeImage(options.gamma) img.optimizeImage(options.gamma)
if overrideQuality != 5: if overrideQuality != 5:
img.resizeImage(options.upscale, options.stretch, options.bordersColor, overrideQuality) img.resizeImage(options.upscale, options.stretch, options.bordersColor, overrideQuality, options.webtoon)
else: else:
img.resizeImage(options.upscale, options.stretch, options.bordersColor, options.quality) img.resizeImage(options.upscale, options.stretch, options.bordersColor, options.quality, options.webtoon)
if options.forcepng and not options.forcecolor: if options.forcepng and not options.forcecolor:
img.quantizeImage() img.quantizeImage()

View File

@@ -190,12 +190,12 @@ class ComicPage:
palImg.putpalette(self.palette) palImg.putpalette(self.palette)
self.image = self.image.quantize(palette=palImg) self.image = self.image.quantize(palette=palImg)
def resizeImage(self, upscale=False, stretch=False, bordersColor=None, qualityMode=0): def resizeImage(self, upscale=False, stretch=False, bordersColor=None, qualityMode=0, isWebToon=False):
method = Image.ANTIALIAS method = Image.ANTIALIAS
if bordersColor: if bordersColor:
fill = bordersColor fill = bordersColor
else: else:
fill = self.getImageFill() fill = self.getImageFill(isWebToon)
if qualityMode == 0: if qualityMode == 0:
size = (self.size[0], self.size[1]) size = (self.size[0], self.size[1])
generateBorder = True generateBorder = True
@@ -436,21 +436,33 @@ class ComicPage:
else: else:
return True return True
def getImageFill(self): def getImageFill(self, isWebToon):
imageT = self.image.crop((0, 0, self.image.size[0], 1))
imageB = self.image.crop((0, self.image.size[1]-1, self.image.size[0], self.image.size[1]))
fill = 0 fill = 0
fill += self.getImageHistogram(imageT) if isWebToon:
fill += self.getImageHistogram(imageB) imageT = self.image.crop((0, 0, self.image.size[0], 1))
if fill == 2: imageB = self.image.crop((0, self.image.size[1]-1, self.image.size[0], self.image.size[1]))
return 'black' fill += self.getImageHistogram(imageT)
elif fill == 0: fill += self.getImageHistogram(imageB)
return 'white'
else: else:
imageL = self.image.crop((0, 0, 1, self.image.size[1])) imageL = self.image.crop((0, 0, 1, self.image.size[1]))
imageR = self.image.crop((self.image.size[0]-1, 0, self.image.size[0], self.image.size[1])) imageR = self.image.crop((self.image.size[0]-1, 0, self.image.size[0], self.image.size[1]))
fill += self.getImageHistogram(imageL) fill += self.getImageHistogram(imageL)
fill += self.getImageHistogram(imageR) fill += self.getImageHistogram(imageR)
if fill == 2:
return 'black'
elif fill == 0:
return 'white'
else:
if isWebToon:
imageL = self.image.crop((0, 0, 1, self.image.size[1]))
imageR = self.image.crop((self.image.size[0]-1, 0, self.image.size[0], self.image.size[1]))
fill += self.getImageHistogram(imageL)
fill += self.getImageHistogram(imageR)
else:
imageT = self.image.crop((0, 0, self.image.size[0], 1))
imageB = self.image.crop((0, self.image.size[1]-1, self.image.size[0], self.image.size[1]))
fill += self.getImageHistogram(imageT)
fill += self.getImageHistogram(imageB)
if fill >= 2: if fill >= 2:
return 'black' return 'black'
else: else: