From e9f0310b9499a5863d87989b65a601bdd5455032 Mon Sep 17 00:00:00 2001 From: Adrian <143286922+9783e6@users.noreply.github.com> Date: Thu, 19 Jun 2025 01:12:12 +0300 Subject: [PATCH] Fixes to grayscale pages in forcecolor mode (#978) * Fix bit depth of non-color pages in forcecolor mode * Optimization for JPEG non-color pages in forcecolor mode --- kindlecomicconverter/comic2ebook.py | 4 ++-- kindlecomicconverter/image.py | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/kindlecomicconverter/comic2ebook.py b/kindlecomicconverter/comic2ebook.py index 0d6aeb2..faae403 100755 --- a/kindlecomicconverter/comic2ebook.py +++ b/kindlecomicconverter/comic2ebook.py @@ -642,8 +642,8 @@ def imgFileProcessing(work): img.autocontrastImage() img.resizeImage() img.optimizeForDisplay(opt.reducerainbow) - if opt.forcepng and not opt.forcecolor: - img.quantizeImage() + if not opt.forcecolor or (opt.forcecolor and not workImg.color): + img.convertToGrayscaleOrQuantize() output.append(img.saveToDir()) return output except Exception: diff --git a/kindlecomicconverter/image.py b/kindlecomicconverter/image.py index 9c8e4ea..ef604c2 100755 --- a/kindlecomicconverter/image.py +++ b/kindlecomicconverter/image.py @@ -304,8 +304,6 @@ class ComicPage: def saveToDir(self): try: flags = [] - if not self.opt.forcecolor and not self.opt.forcepng: - self.image = self.image.convert('L') if self.rotated: flags.append('Rotated') if self.fill != 'white': @@ -353,6 +351,12 @@ class ComicPage: else: self.image = ImageOps.autocontrast(Image.eval(self.image, lambda a: int(255 * (a / 255.) ** gamma))) + def convertToGrayscaleOrQuantize(self): + if self.opt.forcepng: + self.quantizeImage() + else: + self.image = self.image.convert('L') + def quantizeImage(self): palImg = Image.new('P', (1, 1)) palImg.putpalette(self.palette)