1
0
mirror of https://github.com/ciromattia/kcc synced 2026-05-30 03:03:21 +00:00

Merge pull request #23 from ciromattia/AcidWeb-Scrapbook

Added option to rotate images instead spliting.
This commit is contained in:
Ciro Mattia Gonano
2013-03-02 09:59:12 -08:00
3 changed files with 35 additions and 29 deletions
+5 -5
View File
@@ -1,5 +1,5 @@
/*.pyc *.pyc
/*.cbz *.cbz
/*.cbr *.cbr
/.idea .idea
/build build
+3 -1
View File
@@ -227,7 +227,7 @@ def dirImgProcess(path):
else: else:
print ".", print ".",
img = image.ComicPage(os.path.join(dirpath, afile), options.profile) 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 split is not None:
if options.verbose: if options.verbose:
print "Splitted " + afile print "Splitted " + afile
@@ -333,6 +333,8 @@ def main(argv=None):
+ "is not like the device's one [default=False]") + "is not like the device's one [default=False]")
parser.add_option("--no-cut-page-numbers", action="store_false", dest="cutpagenumbers", default=True, 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]") 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) options, args = parser.parse_args(argv)
if len(args) != 1: if len(args) != 1:
parser.print_help() parser.print_help()
+27 -23
View File
@@ -159,36 +159,40 @@ class ComicPage:
self.image = ImageOps.fit(self.image, self.size, method=method, centering=(0.5, 0.5)) self.image = ImageOps.fit(self.image, self.size, method=method, centering=(0.5, 0.5))
return self.image return self.image
def splitPage(self, targetdir, righttoleft=False): def splitPage(self, targetdir, righttoleft=False, rotate=False):
width, height = self.image.size width, height = self.image.size
dstwidth, dstheight = self.size dstwidth, dstheight = self.size
#print "Image is %d x %d" % (width,height) #print "Image is %d x %d" % (width,height)
# only split if origin is not oriented the same as target # only split if origin is not oriented the same as target
if (width > height) != (dstwidth > dstheight): if (width > height) != (dstwidth > dstheight):
if width > height: if rotate:
# source is landscape, so split by the width self.image = self.image.rotate(90)
leftbox = (0, 0, width / 2, height) return None
rightbox = (width / 2, 0, width, height)
else: else:
# source is portrait and target is landscape, so split by the height if width > height:
leftbox = (0, 0, width, height / 2) # source is landscape, so split by the width
rightbox = (0, height / 2, width, height) leftbox = (0, 0, width / 2, height)
filename = os.path.splitext(os.path.basename(self.origFileName)) rightbox = (width / 2, 0, width, height)
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: else:
pageone = self.image.crop(leftbox) # source is portrait and target is landscape, so split by the height
pagetwo = self.image.crop(rightbox) leftbox = (0, 0, width, height / 2)
pageone.save(fileone) rightbox = (0, height / 2, width, height)
pagetwo.save(filetwo) filename = os.path.splitext(os.path.basename(self.origFileName))
os.remove(self.origFileName) fileone = targetdir + '/' + filename[0] + '-1' + filename[1]
except IOError as e: filetwo = targetdir + '/' + filename[0] + '-2' + filename[1]
raise RuntimeError('Cannot write image in directory %s: %s' % (targetdir, e)) try:
return fileone, filetwo 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: else:
return None return None