about summary refs log tree commit diff
path: root/kcc/image.py
diff options
context:
space:
mode:
authorPaweł Jastrzębski <pawelj@vulturis.eu>2013-09-15 16:24:14 +0200
committerPaweł Jastrzębski <pawelj@vulturis.eu>2013-09-15 16:24:14 +0200
commita8c3ef7d0034efea19635c78e4cf341a643fd50d (patch)
treef7102b3f2f6a6b716ced7f5e7e0fb8558206c3c7 /kcc/image.py
parentMerged Kindle 3, 4 and 5 profiles (diff)
downloadkcc-a8c3ef7d0034efea19635c78e4cf341a643fd50d.tar.gz
kcc-a8c3ef7d0034efea19635c78e4cf341a643fd50d.tar.bz2
kcc-a8c3ef7d0034efea19635c78e4cf341a643fd50d.zip
Margins color detection now handles every file
Diffstat (limited to 'kcc/image.py')
-rwxr-xr-xkcc/image.py51
1 files changed, 41 insertions, 10 deletions
diff --git a/kcc/image.py b/kcc/image.py
index 86abf44..b384ba6 100755
--- a/kcc/image.py
+++ b/kcc/image.py
@@ -186,17 +186,12 @@ class ComicPage:
         palImg.putpalette(self.palette)
         self.image = self.image.quantize(palette=palImg)
 
-    def resizeImage(self, upscale=False, stretch=False, black_borders=False, qualityMode=0):
+    def resizeImage(self, upscale=False, stretch=False, bordersColor=None, qualityMode=0):
         method = Image.ANTIALIAS
-        if '-KCCFW' in str(self.filename):
-            fill = 'white'
-        elif '-KCCFB' in str(self.filename):
-            fill = 'black'
+        if bordersColor:
+            fill = bordersColor
         else:
-            if black_borders:
-                fill = 'black'
-            else:
-                fill = 'white'
+            fill = self.getImageFill()
         if qualityMode == 0:
             size = (self.size[0], self.size[1])
             generateBorder = True
@@ -379,4 +374,40 @@ class ComicPage:
             #    print "Right crop: %s"%diff
             self.image = self.image.crop((0, 0, widthImg - diff, heightImg))
             #    print "New size: %sx%s"%(self.image.size[0],self.image.size[1])
-        return self.image
\ No newline at end of file
+        return self.image
+
+    def getImageHistogram(self, image):
+        histogram = image.histogram()
+        RBGW = []
+        for i in range(256):
+            RBGW.append(histogram[i] + histogram[256 + i] + histogram[512 + i])
+        white = 0
+        black = 0
+        for i in range(245, 256):
+            white += RBGW[i]
+        for i in range(11):
+            black += RBGW[i]
+        if white > black:
+            return False
+        else:
+            return True
+
+    def getImageFill(self):
+        imageT = self.image.crop((0, 0, self.image.size[0], 1))
+        imageB = self.image.crop((0, self.image.size[1]-1, self.image.size[0], self.image.size[1]))
+        fill = 0
+        fill += self.getImageHistogram(imageT)
+        fill += self.getImageHistogram(imageB)
+        if fill == 2:
+            return 'black'
+        elif fill == 0:
+            return 'white'
+        else:
+            imageL = self.image.crop((0, 0, 1, self.image.size[1]))
+            imageR = self.image.crop((self.image.size[0]-1, 0, self.image.size[0], self.image.size[1]))
+            fill += self.getImageHistogram(imageL)
+            fill += self.getImageHistogram(imageR)
+            if fill >= 2:
+                return 'black'
+            else:
+                return 'white'
\ No newline at end of file