about summary refs log tree commit diff
path: root/kcc/image.py
diff options
context:
space:
mode:
authorPaweł Jastrzębski <pawelj@vulturis.eu>2013-03-17 12:52:33 +0100
committerPaweł Jastrzębski <pawelj@vulturis.eu>2013-03-17 12:52:33 +0100
commit6bc80380686c23df9678e5ee630f59c008f7b82c (patch)
tree4466c014ed9f5f713a8f76fc0525951b805b256b /kcc/image.py
parentForce upscaling for spitted pages (diff)
downloadkcc-6bc80380686c23df9678e5ee630f59c008f7b82c.tar.gz
kcc-6bc80380686c23df9678e5ee630f59c008f7b82c.tar.bz2
kcc-6bc80380686c23df9678e5ee630f59c008f7b82c.zip
Yet another refactoring of resizeImage
I hope all bugs are dead this time!
Diffstat (limited to 'kcc/image.py')
-rwxr-xr-xkcc/image.py43
1 files changed, 24 insertions, 19 deletions
diff --git a/kcc/image.py b/kcc/image.py
index c8fc450..743c124 100755
--- a/kcc/image.py
+++ b/kcc/image.py
@@ -143,39 +143,44 @@ class ComicPage:
         palImg.putpalette(self.palette)
         self.image = self.image.quantize(palette=palImg)
 
-    def resizeImage(self, upscale=False, stretch=False, black_borders=False, isSplit=False, landscapeMode=False,
-                    noPanelViewHQ=False):
+    def resizeImage(self, upscale=False, stretch=False, black_borders=False, isSplit=False, toRight=False,
+                    landscapeMode=False, noPanelViewHQ=False):
         method = Image.ANTIALIAS
         if black_borders:
             fill = 'black'
         else:
             fill = 'white'
-        if not noPanelViewHQ:
-            size = (self.panelviewsize[0], self.panelviewsize[1])
-        else:
+        if noPanelViewHQ:
             size = (self.size[0], self.size[1])
+        else:
+            size = (self.panelviewsize[0], self.panelviewsize[1])
+        if isSplit and landscapeMode:
+            upscale = True
         if self.image.size[0] <= self.size[0] and self.image.size[1] <= self.size[1]:
             if not upscale:
-                if isSplit and landscapeMode:
-                    borderh = (self.size[1] - self.image.size[1]) / 2
-                    self.image = ImageOps.expand(self.image, border=(0, borderh), fill=fill)
-                    method = Image.BILINEAR
-                else:
-                    borderw = (self.size[0] - self.image.size[0]) / 2
-                    borderh = (self.size[1] - self.image.size[1]) / 2
-                    self.image = ImageOps.expand(self.image, border=(borderw, borderh), fill=fill)
-                    return self.image
+                borderw = (self.size[0] - self.image.size[0]) / 2
+                borderh = (self.size[1] - self.image.size[1]) / 2
+                self.image = ImageOps.expand(self.image, border=(borderw, borderh), fill=fill)
+                return self.image
             else:
                 method = Image.BILINEAR
-        if stretch:
-            self.image = self.image.resize(self.size, method)
+        if stretch:  # if stretching call directly resize() without other considerations.
+            self.image = self.image.resize(size, method)
             return self.image
         ratioDev = float(self.size[0]) / float(self.size[1])
         if (float(self.image.size[0]) / float(self.image.size[1])) < ratioDev:
-            diff = int(self.image.size[1] * ratioDev) - self.image.size[0]
             if isSplit and landscapeMode:
-                diff = 2
-            self.image = ImageOps.expand(self.image, border=(diff / 2, 0), fill=fill)
+                diff = int(self.image.size[1] * ratioDev) - self.image.size[0]
+                self.image = ImageOps.expand(self.image, border=(diff / 2, 0), fill=fill)
+                tempImg = Image.new(self.image.mode, (self.image.size[0] + diff, self.image.size[1]), fill)
+                if toRight:
+                    tempImg.paste(self.image, (diff, 0))
+                else:
+                    tempImg.paste(self.image, (0, 0))
+                self.image = tempImg
+            else:
+                diff = int(self.image.size[1] * ratioDev) - self.image.size[0]
+                self.image = ImageOps.expand(self.image, border=(diff / 2, 0), fill=fill)
         elif (float(self.image.size[0]) / float(self.image.size[1])) > ratioDev:
             diff = int(self.image.size[0] / ratioDev) - self.image.size[1]
             self.image = ImageOps.expand(self.image, border=(0, diff / 2), fill=fill)