diff --git a/README.md b/README.md index 52fbf64..9f40d6a 100644 --- a/README.md +++ b/README.md @@ -272,6 +272,7 @@ PROCESSING: --coverfill Center-crop only the cover to fill target device screen --forcecolor Don't convert images to grayscale --forcepng Create PNG files instead JPEG + --noquantize Don't quantize PNG images to 16 colors --mozjpeg Create JPEG files using mozJpeg --jpeg-quality The JPEG quality, on a scale from 0 (worst) to 95 (best). Default 85 for most devices. --maximizestrips Turn 1x4 strips to 2x2 strips diff --git a/gui/KCC.ui b/gui/KCC.ui index fcc5f07..d938ed0 100644 --- a/gui/KCC.ui +++ b/gui/KCC.ui @@ -929,6 +929,20 @@ Higher values are larger and higher quality, and may resolve blank page issues.< + + + + Don't quantize PNG images to 16 colors (4 bit) + +This will double file size but preserve all 256 colors (8 bit). + +Eink only has 16 shades of gray so you probably don't want this. + + + No Quantize + + + diff --git a/kindlecomicconverter/KCC_gui.py b/kindlecomicconverter/KCC_gui.py index 73e8f91..e11419d 100644 --- a/kindlecomicconverter/KCC_gui.py +++ b/kindlecomicconverter/KCC_gui.py @@ -353,6 +353,8 @@ class WorkerThread(QThread): options.forcepng = True elif GUI.mozJpegBox.checkState() == Qt.CheckState.Checked: options.mozjpeg = True + if GUI.noQuantizeBox.isChecked(): + options.noquantize = True if GUI.jpegQualityBox.isChecked(): options.jpegquality = GUI.jpegQualitySpinBox.value() if GUI.currentMode > 2: @@ -1045,6 +1047,7 @@ class KCCGUI(KCC_ui.Ui_mainWindow): 'coverFillBox': GUI.coverFillBox.checkState(), 'metadataTitleBox': GUI.metadataTitleBox.checkState(), 'mozJpegBox': GUI.mozJpegBox.checkState(), + 'noQuantizeBox': GUI.noQuantizeBox.checkState(), 'jpegQualityBox': GUI.jpegQualityBox.checkState(), 'jpegQuality': GUI.jpegQualitySpinBox.value(), 'widthBox': GUI.widthBox.value(), diff --git a/kindlecomicconverter/KCC_ui.py b/kindlecomicconverter/KCC_ui.py index 1cdb648..115ded1 100644 --- a/kindlecomicconverter/KCC_ui.py +++ b/kindlecomicconverter/KCC_ui.py @@ -477,6 +477,11 @@ class Ui_mainWindow(object): self.gridLayout_2.addWidget(self.rotateRightBox, 10, 1, 1, 1) + self.noQuantizeBox = QCheckBox(self.optionWidget) + self.noQuantizeBox.setObjectName(u"noQuantizeBox") + + self.gridLayout_2.addWidget(self.noQuantizeBox, 10, 2, 1, 1) + self.gridLayout.addWidget(self.optionWidget, 5, 0, 1, 2) @@ -764,6 +769,14 @@ class Ui_mainWindow(object): self.rotateRightBox.setToolTip(QCoreApplication.translate("mainWindow", u"Rotate 2 page spreads in opposite direction than normal.", None)) #endif // QT_CONFIG(tooltip) self.rotateRightBox.setText(QCoreApplication.translate("mainWindow", u"Rotate Right", None)) +#if QT_CONFIG(tooltip) + self.noQuantizeBox.setToolTip(QCoreApplication.translate("mainWindow", u"Don't quantize PNG images to 16 colors (4 bit)\n" +"\n" +"This will double file size but preserve all 256 colors (8 bit).\n" +"\n" +"Eink only has 16 shades of gray so you probably don't want this.", None)) +#endif // QT_CONFIG(tooltip) + self.noQuantizeBox.setText(QCoreApplication.translate("mainWindow", u"No Quantize", None)) self.gammaLabel.setText(QCoreApplication.translate("mainWindow", u"Gamma: Auto", None)) self.jpegQualityLabel.setText(QCoreApplication.translate("mainWindow", u"JPEG Quality:", None)) # retranslateUi diff --git a/kindlecomicconverter/comic2ebook.py b/kindlecomicconverter/comic2ebook.py index 1cfc5c9..9aa1052 100755 --- a/kindlecomicconverter/comic2ebook.py +++ b/kindlecomicconverter/comic2ebook.py @@ -707,7 +707,8 @@ def imgFileProcessing(work): pass elif opt.forcepng: img.convertToGrayscale() - img.quantizeImage() + if not opt.noquantize: + img.quantizeImage() if opt.format == 'PDF': img.convertToGrayscale() elif opt.profile == 'KDX' and opt.format == 'CBZ': @@ -1403,6 +1404,8 @@ def makeParser(): help="Erase rainbow effect on color eink screen by attenuating interfering frequencies") processing_options.add_argument("--forcepng", action="store_true", dest="forcepng", default=False, help="Create PNG files instead JPEG") + processing_options.add_argument("--noquantize", action="store_true", dest="noquantize", default=False, + help="Don't quantize to 16 color PNG") processing_options.add_argument("--mozjpeg", action="store_true", dest="mozjpeg", default=False, help="Create JPEG files using mozJpeg") processing_options.add_argument("--jpeg-quality", type=int, dest="jpegquality",