1
0
mirror of https://github.com/ciromattia/kcc synced 2025-12-31 18:41:54 +00:00

Code cleaning

This commit is contained in:
Paweł Jastrzębski
2013-03-16 10:10:19 +01:00
parent 6d704b382d
commit cec9356fc2
2 changed files with 69 additions and 148 deletions

View File

@@ -270,8 +270,7 @@ def applyImgOptimization(img, isSplit=False, toRight=False):
img.cropWhiteSpace(10.0)
if options.cutpagenumbers:
img.cutPageNumber()
img.resizeImage(options.upscale, options.stretch, options.black_borders, options.fakepanelviewlandscape, isSplit,
toRight, options.landscapemode)
img.resizeImage(options.upscale, options.stretch, options.black_borders, isSplit, toRight, options.landscapemode)
img.optimizeImage(options.gamma)
if not options.notquantize:
img.quantizeImage()
@@ -313,42 +312,19 @@ def dirImgProcess(path):
if facing == "right":
splitCount += 1
facing = "left"
if options.fakepanelview or options.fakepanelviewlandscape:
img0 = image.ComicPage(split[0], options.profile)
img1 = image.ComicPage(split[1], options.profile)
splitA = img0.splitPageFakePanelView(dirpath, options.righttoleft,
options.fakepanelviewlandscape)
splitB = img1.splitPageFakePanelView(dirpath, options.righttoleft,
options.fakepanelviewlandscape)
for img in splitA:
tempImg = image.ComicPage(img, options.profile)
applyImgOptimization(tempImg)
tempImg.saveToDir(dirpath, options.notquantize)
for img in splitB:
tempImg = image.ComicPage(img, options.profile)
applyImgOptimization(tempImg)
tempImg.saveToDir(dirpath, options.notquantize)
else:
img0 = image.ComicPage(split[0], options.profile)
applyImgOptimization(img0, True, toRight1)
img0.saveToDir(dirpath, options.notquantize)
img1 = image.ComicPage(split[1], options.profile)
applyImgOptimization(img1, True, toRight2)
img1.saveToDir(dirpath, options.notquantize)
img0 = image.ComicPage(split[0], options.profile)
applyImgOptimization(img0, True, toRight1)
img0.saveToDir(dirpath, options.notquantize)
img1 = image.ComicPage(split[1], options.profile)
applyImgOptimization(img1, True, toRight2)
img1.saveToDir(dirpath, options.notquantize)
else:
if facing == "right":
facing = "left"
else:
facing = "right"
if options.fakepanelview or options.fakepanelviewlandscape:
split = img.splitPageFakePanelView(dirpath, options.righttoleft, options.fakepanelviewlandscape)
for img in split:
tempImg = image.ComicPage(img, options.profile)
applyImgOptimization(tempImg)
tempImg.saveToDir(dirpath, options.notquantize)
else:
applyImgOptimization(img)
img.saveToDir(dirpath, options.notquantize)
applyImgOptimization(img)
img.saveToDir(dirpath, options.notquantize)
def genEpubStruct(path):
@@ -464,10 +440,8 @@ def main(argv=None):
help="Comic title [Default=filename]")
parser.add_option("-m", "--manga-style", action="store_true", dest="righttoleft", default=False,
help="Manga style (Right-to-left reading and splitting) [Default=False]")
parser.add_option("--panelview", action="store_true", dest="fakepanelview", default=False,
help="Emulate Panel View feature (For Kindle 4 NT or older) [Default=False]")
parser.add_option("--panelviewlandscape", action="store_true", dest="fakepanelviewlandscape", default=False,
help="Emulate Panel View feature - Landscape mode (For Kindle 4 NT or older) [Default=False]")
parser.add_option("--panelview", action="store_true", dest="panelview", default=False,
help="Add Panel View support (For Kindle Classic or older) [Default=False]")
parser.add_option("--noprocessing", action="store_false", dest="imgproc", default=True,
help="Do not apply image preprocessing (Page splitting and optimizations) [Default=True]")
parser.add_option("--nodithering", action="store_true", dest="notquantize", default=False,

View File

@@ -141,15 +141,13 @@ class ComicPage:
palImg.putpalette(self.palette)
self.image = self.image.quantize(palette=palImg)
def resizeImage(self, upscale=False, stretch=False, black_borders=False, fakePanelViewLandscape=False,
isSplit=False, toRight=False, landscapeMode=False):
def resizeImage(self, upscale=False, stretch=False, black_borders=False, isSplit=False, toRight=False,
landscapeMode=False):
method = Image.ANTIALIAS
if black_borders:
fill = 'black'
else:
fill = 'white'
if fakePanelViewLandscape:
self.image = self.image.rotate(90)
if self.image.size[0] <= self.size[0] and self.image.size[1] <= self.size[1]:
if not upscale:
if isSplit and landscapeMode:
@@ -223,80 +221,6 @@ class ComicPage:
else:
return None
def splitPageFakePanelView(self, targetdir, righttoleft=False, fakePanelWiewLandscape=False):
width, height = self.image.size
if fakePanelWiewLandscape:
topbox = (0, 0, width, ((height / 2) + (height / 9)))
bottombox = (0, ((height / 2) - (height / 9)), width, height)
filename = os.path.splitext(os.path.basename(self.origFileName))
file1 = targetdir + '/' + filename[0] + '-1' + filename[1]
file2 = targetdir + '/' + filename[0] + '-2' + filename[1]
try:
page1 = self.image.crop(topbox)
page2 = self.image.crop(bottombox)
page1.save(file1)
page2.save(file2)
os.remove(self.origFileName)
except IOError as e:
raise RuntimeError('Cannot write image in directory %s: %s' % (targetdir, e))
return file1, file2
else:
topleftbox = (0, 0, ((width / 2) + (width / 9)), ((height / 2) + (height / 9)))
toprightbox = ((width / 2) - (width / 9)), 0, width, ((height / 2) + (height / 9))
bottomleftbox = (0, ((height / 2) - (height / 9)), ((width / 2) + (width / 9)), height)
bototmrightbox = (((width / 2) - (width / 9)), ((height / 2) - (height / 9)), width, height)
filename = os.path.splitext(os.path.basename(self.origFileName))
file0 = targetdir + '/' + filename[0] + '-0' + filename[1]
file1 = targetdir + '/' + filename[0] + '-1' + filename[1]
file2 = targetdir + '/' + filename[0] + '-2' + filename[1]
file3 = targetdir + '/' + filename[0] + '-3' + filename[1]
file4 = targetdir + '/' + filename[0] + '-4' + filename[1]
try:
if righttoleft:
page0 = self.image
page1 = self.image.crop(toprightbox)
page2 = self.image.crop(topleftbox)
page3 = self.image.crop(bototmrightbox)
page4 = self.image.crop(bottomleftbox)
else:
page0 = self.image
page1 = self.image.crop(topleftbox)
page2 = self.image.crop(toprightbox)
page3 = self.image.crop(bottomleftbox)
page4 = self.image.crop(bototmrightbox)
page0.save(file0)
page1.save(file1)
page2.save(file2)
page3.save(file3)
page4.save(file4)
os.remove(self.origFileName)
except IOError as e:
raise RuntimeError('Cannot write image in directory %s: %s' % (targetdir, e))
return file0, file1, file2, file3, file4
# def frameImage(self):
# foreground = tuple(self.palette[:3])
# background = tuple(self.palette[-3:])
# widthDev, heightDev = self.size
# widthImg, heightImg = self.image.size
# pastePt = (
# max(0, (widthDev - widthImg) / 2),
# max(0, (heightDev - heightImg) / 2)
# )
# corner1 = (
# pastePt[0] - 1,
# pastePt[1] - 1
# )
# corner2 = (
# pastePt[0] + widthImg + 1,
# pastePt[1] + heightImg + 1
# )
# imageBg = Image.new(self.image.mode, self.size, background)
# imageBg.paste(self.image, pastePt)
# draw = ImageDraw.Draw(imageBg)
# draw.rectangle([corner1, corner2], outline=foreground)
# self.image = imageBg
def cutPageNumber(self):
widthImg, heightImg = self.image.size
delta = 2
@@ -390,36 +314,59 @@ class ComicPage:
return self.image
# def addProgressbar(self, file_number, files_totalnumber, size, howoften):
# if file_number // howoften != float(file_number) / howoften:
# return self.image
# white = (255, 255, 255)
# black = (0, 0, 0)
# widthDev, heightDev = size
# widthImg, heightImg = self.image.size
# pastePt = (
# max(0, (widthDev - widthImg) / 2),
# max(0, (heightDev - heightImg) / 2)
# )
# imageBg = Image.new('RGB', size, white)
# imageBg.paste(self.image, pastePt)
# self.image = imageBg
# widthImg, heightImg = self.image.size
# draw = ImageDraw.Draw(self.image)
# Black rectangle
# draw.rectangle([(0, heightImg - 3), (widthImg, heightImg)], outline=black, fill=black)
# White rectangle
# draw.rectangle([(widthImg * file_number / files_totalnumber, heightImg - 3), (widthImg - 1, heightImg)],
# outline=black, fill=white)
# Making notches
# for i in range(1, 10):
# if i <= (10 * file_number / files_totalnumber):
# notch_colour = white # White
# else:
# notch_colour = black # Black
# draw.line([(widthImg * float(i) / 10, heightImg - 3), (widthImg * float(i) / 10, heightImg)],
# fill=notch_colour)
# The 50%
# if i == 5:
# draw.rectangle([(widthImg / 2 - 1, heightImg - 5), (widthImg / 2 + 1, heightImg)],
# outline=black, fill=notch_colour)
# return self.image
# if file_number // howoften != float(file_number) / howoften:
# return self.image
# white = (255, 255, 255)
# black = (0, 0, 0)
# widthDev, heightDev = size
# widthImg, heightImg = self.image.size
# pastePt = (
# max(0, (widthDev - widthImg) / 2),
# max(0, (heightDev - heightImg) / 2)
# )
# imageBg = Image.new('RGB', size, white)
# imageBg.paste(self.image, pastePt)
# self.image = imageBg
# widthImg, heightImg = self.image.size
# draw = ImageDraw.Draw(self.image)
# #Black rectangle
# draw.rectangle([(0, heightImg - 3), (widthImg, heightImg)], outline=black, fill=black)
# #White rectangle
# draw.rectangle([(widthImg * file_number / files_totalnumber, heightImg - 3), (widthImg - 1, heightImg)],
# outline=black, fill=white)
# #Making notches
# for i in range(1, 10):
# if i <= (10 * file_number / files_totalnumber):
# notch_colour = white # White
# else:
# notch_colour = black # Black
# draw.line([(widthImg * float(i) / 10, heightImg - 3), (widthImg * float(i) / 10, heightImg)],
# fill=notch_colour)
# #The 50%
# if i == 5:
# draw.rectangle([(widthImg / 2 - 1, heightImg - 5), (widthImg / 2 + 1, heightImg)],
# outline=black, fill=notch_colour)
# return self.image
#
# def frameImage(self):
# foreground = tuple(self.palette[:3])
# background = tuple(self.palette[-3:])
# widthDev, heightDev = self.size
# widthImg, heightImg = self.image.size
# pastePt = (
# max(0, (widthDev - widthImg) / 2),
# max(0, (heightDev - heightImg) / 2)
# )
# corner1 = (
# pastePt[0] - 1,
# pastePt[1] - 1
# )
# corner2 = (
# pastePt[0] + widthImg + 1,
# pastePt[1] + heightImg + 1
# )
# imageBg = Image.new(self.image.mode, self.size, background)
# imageBg.paste(self.image, pastePt)
# draw = ImageDraw.Draw(imageBg)
# draw.rectangle([corner1, corner2], outline=foreground)
# self.image = imageBg