diff --git a/kindlecomicconverter/image.py b/kindlecomicconverter/image.py index dab3f40..579c3fc 100755 --- a/kindlecomicconverter/image.py +++ b/kindlecomicconverter/image.py @@ -343,7 +343,15 @@ class ComicPage: # bias adjustment SPREAD_THRESHOLD = 5 - if not self.opt.forcecolor and cb_spread < SPREAD_THRESHOLD and cr_spread < SPREAD_THRESHOLD: + if self.opt.forcecolor: + if any([ + cb_nonzero[0] > 128, + cr_nonzero[0] > 128, + cb_nonzero[-1] < 128, + cr_nonzero[-1] < 128, + ]): + return True + elif cb_spread < SPREAD_THRESHOLD and cr_spread < SPREAD_THRESHOLD: return False # check for large amount of extreme colors @@ -358,7 +366,7 @@ class ComicPage: return True # get ride of most jpg compression - cutoff = (2, 2) + cutoff = (3, 3) cb_hist, cr_hist = self.histograms_cutoff(cb, cr, cutoff) cb_nonzero = [i for i, e in enumerate(cb_hist) if e] @@ -368,11 +376,19 @@ class ComicPage: # bias adjustment SPREAD_THRESHOLD = 5 - if not self.opt.forcecolor and cb_spread < SPREAD_THRESHOLD and cr_spread < SPREAD_THRESHOLD: + if self.opt.forcecolor: + if any([ + cb_nonzero[0] > 128, + cr_nonzero[0] > 128, + cb_nonzero[-1] < 128, + cr_nonzero[-1] < 128, + ]): + return True + elif cb_spread < SPREAD_THRESHOLD and cr_spread < SPREAD_THRESHOLD: return False - # check for any amount of mild colors still remaining - DIFF_THRESHOLD = 6 + # check for any amount of mild colors still remaining, 3 is barely enough, 2 is too high + DIFF_THRESHOLD = 3 if any([ cb_nonzero[0] <= 128 - DIFF_THRESHOLD, cr_nonzero[0] <= 128 - DIFF_THRESHOLD,