1
0
mirror of https://github.com/ciromattia/kcc synced 2026-02-01 09:57:54 +00:00

Added additional cover processing

This commit is contained in:
Paweł Jastrzębski
2014-06-02 19:55:20 +02:00
parent 56195d301d
commit b323204628
2 changed files with 35 additions and 3 deletions

View File

@@ -29,7 +29,7 @@ from re import split, sub
from stat import S_IWRITE, S_IREAD, S_IEXEC
from zipfile import ZipFile, ZIP_STORED, ZIP_DEFLATED
from tempfile import mkdtemp
from shutil import move, copyfile, copytree, rmtree
from shutil import move, copytree, rmtree
from optparse import OptionParser, OptionGroup
from multiprocessing import Pool
from xml.dom.minidom import parse
@@ -559,7 +559,7 @@ def genEpubStruct(path, chapterNames):
if cover is None:
cover = os.path.join(os.path.join(path, 'OEBPS', 'Images'),
'cover' + getImageFileName(filelist[-1][1])[1])
copyfile(os.path.join(filelist[-1][0], filelist[-1][1]), cover)
image.Cover(os.path.join(filelist[-1][0], filelist[-1][1]), cover)
buildNCX(path, options.title, chapterlist, chapterNames)
# Ensure we're sorting files alphabetically
convert = lambda text: int(text) if text.isdigit() else text

View File

@@ -144,7 +144,7 @@ class ComicPage:
+ str(self.border[2]) + "-" + str(self.border[3]))
if forcepng:
filename += ".png"
self.image.save(filename, "PNG", optimize=1)
self.image.save(filename, "PNG", optimize=1)
else:
filename += ".jpg"
self.image.save(filename, "JPEG", optimize=1)
@@ -469,3 +469,35 @@ class ComicPage:
else:
# Detection failed
return False
class Cover:
def __init__(self, source, target):
self.source = source
self.target = target
self.image = Image.open(source)
self.image = self.image.convert('RGB')
self.process()
self.save()
def trim(self):
bg = Image.new(self.image.mode, self.image.size, self.image.getpixel((0, 0)))
diff = ImageChops.difference(self.image, bg)
diff = ImageChops.add(diff, diff, 2.0, -100)
bbox = diff.getbbox()
if bbox:
return self.image.crop(bbox)
else:
return self.image
def process(self):
self.image = self.trim()
def save(self):
try:
if os.path.splitext(self.source)[1].lower() == '.png':
self.image.save(self.target, "PNG", optimize=1)
else:
self.image.save(self.target, "JPEG", optimize=1)
except IOError:
raise RuntimeError('Failed to save cover')