diff options
-rw-r--r-- | .gitignore | 10 | ||||
-rwxr-xr-x | kcc/comic2ebook.py | 4 | ||||
-rwxr-xr-x | kcc/image.py | 54 |
3 files changed, 37 insertions, 31 deletions
diff --git a/.gitignore b/.gitignore index ce8a767..06dbc60 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ -/*.pyc -/*.cbz -/*.cbr -/.idea -/build \ No newline at end of file +*.pyc +*.cbz +*.cbr +.idea +build \ No newline at end of file diff --git a/kcc/comic2ebook.py b/kcc/comic2ebook.py index e3f3150..cf21ece 100755 --- a/kcc/comic2ebook.py +++ b/kcc/comic2ebook.py @@ -227,7 +227,7 @@ def dirImgProcess(path): else: print ".", img = image.ComicPage(os.path.join(dirpath, afile), options.profile) - split = img.splitPage(dirpath, options.righttoleft) + split = img.splitPage(dirpath, options.righttoleft, options.rotate) if split is not None: if options.verbose: print "Splitted " + afile @@ -333,6 +333,8 @@ def main(argv=None): + "is not like the device's one [default=False]") parser.add_option("--no-cut-page-numbers", action="store_false", dest="cutpagenumbers", default=True, help="Do not try to cut page numbering on images [default=True]") + parser.add_option("--rotate", action="store_true", dest="rotate", default=False, + help="Disable page spliting. Instead rotate images [default=False]") options, args = parser.parse_args(argv) if len(args) != 1: parser.print_help() diff --git a/kcc/image.py b/kcc/image.py index 9421d15..81b88a8 100755 --- a/kcc/image.py +++ b/kcc/image.py @@ -159,36 +159,40 @@ class ComicPage: self.image = ImageOps.fit(self.image, self.size, method=method, centering=(0.5, 0.5)) return self.image - def splitPage(self, targetdir, righttoleft=False): + def splitPage(self, targetdir, righttoleft=False, rotate=False): width, height = self.image.size dstwidth, dstheight = self.size #print "Image is %d x %d" % (width,height) # only split if origin is not oriented the same as target if (width > height) != (dstwidth > dstheight): - if width > height: - # source is landscape, so split by the width - leftbox = (0, 0, width / 2, height) - rightbox = (width / 2, 0, width, height) - else: - # source is portrait and target is landscape, so split by the height - leftbox = (0, 0, width, height / 2) - rightbox = (0, height / 2, width, height) - filename = os.path.splitext(os.path.basename(self.origFileName)) - fileone = targetdir + '/' + filename[0] + '-1' + filename[1] - filetwo = targetdir + '/' + filename[0] + '-2' + filename[1] - try: - if righttoleft: - pageone = self.image.crop(rightbox) - pagetwo = self.image.crop(leftbox) - else: - pageone = self.image.crop(leftbox) - pagetwo = self.image.crop(rightbox) - pageone.save(fileone) - pagetwo.save(filetwo) - os.remove(self.origFileName) - except IOError as e: - raise RuntimeError('Cannot write image in directory %s: %s' % (targetdir, e)) - return fileone, filetwo + if rotate: + self.image = self.image.rotate(90) + return None + else: + if width > height: + # source is landscape, so split by the width + leftbox = (0, 0, width / 2, height) + rightbox = (width / 2, 0, width, height) + else: + # source is portrait and target is landscape, so split by the height + leftbox = (0, 0, width, height / 2) + rightbox = (0, height / 2, width, height) + filename = os.path.splitext(os.path.basename(self.origFileName)) + fileone = targetdir + '/' + filename[0] + '-1' + filename[1] + filetwo = targetdir + '/' + filename[0] + '-2' + filename[1] + try: + if righttoleft: + pageone = self.image.crop(rightbox) + pagetwo = self.image.crop(leftbox) + else: + pageone = self.image.crop(leftbox) + pagetwo = self.image.crop(rightbox) + pageone.save(fileone) + pagetwo.save(filetwo) + os.remove(self.origFileName) + except IOError as e: + raise RuntimeError('Cannot write image in directory %s: %s' % (targetdir, e)) + return fileone, filetwo else: return None |