diff --git a/src/calibre/ebooks/lrf/comic/convert_from.py b/src/calibre/ebooks/lrf/comic/convert_from.py index 33d697bfe4..70daaa5705 100755 --- a/src/calibre/ebooks/lrf/comic/convert_from.py +++ b/src/calibre/ebooks/lrf/comic/convert_from.py @@ -27,7 +27,7 @@ try: MagickGetImageHeight, \ MagickResizeImage, MagickSetImageType, \ GrayscaleType, CatromFilter, MagickSetImagePage, \ - MagickBorderImage, MagickSharpenImage, \ + MagickBorderImage, MagickSharpenImage, MagickDespeckleImage, \ MagickQuantizeImage, RGBColorspace, \ MagickWriteImage, DestroyPixelWand, \ DestroyMagickWand, CloneMagickWand, \ @@ -179,6 +179,10 @@ class PageProcessor(list): MagickSharpenImage(wand, 0.0, 1.0) MagickSetImageType(wand, GrayscaleType) + + if self.opts.despeckle: + MagickDespeckleImage(wand) + MagickQuantizeImage(wand, self.opts.colors, RGBColorspace, 0, 1, 0) dest = '%d_%d.png'%(self.num, i) dest = os.path.join(self.dest, dest) @@ -250,6 +254,8 @@ def config(defaults=None): help=_("Don't split landscape images into two portrait images")) c.add_opt('right2left', ['--right2left'], default=False, action='store_true', help=_('Used for right-to-left publications like manga. Causes landscape pages to be split into portrait pages from right to left.')) + c.add_opt('despeckle', ['-d', '--despeckle'], default=False, + help=_('Enable Despeckle. Reduces speckle noise. May greatly increase processing time.')) c.add_opt('no_sort', ['--no-sort'], default=False, help=_("Don't sort the files found in the comic alphabetically by name. Instead use the order they were added to the comic.")) c.add_opt('profile', ['-p', '--profile'], default='prs500', choices=PROFILES.keys(), diff --git a/src/calibre/gui2/dialogs/comicconf.py b/src/calibre/gui2/dialogs/comicconf.py index 32bd1547be..f9786e7661 100644 --- a/src/calibre/gui2/dialogs/comicconf.py +++ b/src/calibre/gui2/dialogs/comicconf.py @@ -57,6 +57,7 @@ class ComicConf(QDialog, Ui_Dialog): self.opt_dont_sharpen.setChecked(opts.dont_sharpen) self.opt_landscape.setChecked(opts.landscape) self.opt_no_sort.setChecked(opts.no_sort) + self.opt_despeckle.setChecked(opts.despeckle) self.opt_right2left.setChecked(opts.right2left) for opt in self.config.option_set.preferences: diff --git a/src/calibre/gui2/dialogs/comicconf.ui b/src/calibre/gui2/dialogs/comicconf.ui index 07df7dc8a8..d4d66dccda 100644 --- a/src/calibre/gui2/dialogs/comicconf.ui +++ b/src/calibre/gui2/dialogs/comicconf.ui @@ -114,7 +114,7 @@ - + Qt::Horizontal @@ -131,6 +131,13 @@ + + + + De&speckle + + +