From 67714a9b065fd701f47dd4035f538cdc39a2a6d9 Mon Sep 17 00:00:00 2001 From: Alex Xu Date: Fri, 11 Jul 2025 16:28:19 -0700 Subject: [PATCH] fix color autocontrast (#1026) --- kindlecomicconverter/comic2ebook.py | 9 ++++----- kindlecomicconverter/image.py | 4 +--- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/kindlecomicconverter/comic2ebook.py b/kindlecomicconverter/comic2ebook.py index 9804b90..124bede 100755 --- a/kindlecomicconverter/comic2ebook.py +++ b/kindlecomicconverter/comic2ebook.py @@ -639,8 +639,8 @@ def imgFileProcessing(work): workImg = image.ComicPageParser((dirpath, afile), opt) for i in workImg.payload: img = image.ComicPage(opt, *i) - is_not_color = not opt.forcecolor or not img.color - if is_not_color: + is_output_grayscale = not opt.forcecolor or not img.color + if is_output_grayscale: img.convertToGrayscale() if opt.cropping == 2 and not opt.webtoon: img.cropPageNumber(opt.croppingp, opt.croppingm) @@ -649,11 +649,10 @@ def imgFileProcessing(work): if opt.interpanelcrop > 0: img.cropInterPanelEmptySections("horizontal" if opt.interpanelcrop == 1 else "both") img.gammaCorrectImage() - if is_not_color: - img.autocontrastImage() + img.autocontrastImage() img.resizeImage() img.optimizeForDisplay(opt.reducerainbow) - if is_not_color and opt.forcepng: + if is_output_grayscale and opt.forcepng: img.quantizeImage() output.append(img.saveToDir()) return output diff --git a/kindlecomicconverter/image.py b/kindlecomicconverter/image.py index 938d3be..73ee63a 100755 --- a/kindlecomicconverter/image.py +++ b/kindlecomicconverter/image.py @@ -353,9 +353,7 @@ class ComicPage: self.image = Image.eval(self.image, lambda a: int(255 * (a / 255.) ** gamma)) def autocontrastImage(self): - # autocontrast on non grayscale images has unexpected results - # since it autocontrasts each color channel separately - self.image = ImageOps.autocontrast(self.image) + self.image = ImageOps.autocontrast(self.image, preserve_tone=True) def convertToGrayscale(self): self.image = self.image.convert('L')