Added additional cover processing
This commit is contained in:
1 parent
56195d301d
commit
b323204628
2 files changed
+35
-3
No files matched your search
+2
-2
@@ -29,7 +29,7 @@ from re import split, sub
|
|||||||
from stat import S_IWRITE, S_IREAD, S_IEXEC
|
from stat import S_IWRITE, S_IREAD, S_IEXEC
|
||||||
from zipfile import ZipFile, ZIP_STORED, ZIP_DEFLATED
|
from zipfile import ZipFile, ZIP_STORED, ZIP_DEFLATED
|
||||||
from tempfile import mkdtemp
|
from tempfile import mkdtemp
|
||||||
from shutil import move, copyfile, copytree, rmtree
|
from shutil import move, copytree, rmtree
|
||||||
from optparse import OptionParser, OptionGroup
|
from optparse import OptionParser, OptionGroup
|
||||||
from multiprocessing import Pool
|
from multiprocessing import Pool
|
||||||
from xml.dom.minidom import parse
|
from xml.dom.minidom import parse
|
||||||
@@ -559,7 +559,7 @@ def genEpubStruct(path, chapterNames):
|
|||||||
if cover is None:
|
if cover is None:
|
||||||
cover = os.path.join(os.path.join(path, 'OEBPS', 'Images'),
|
cover = os.path.join(os.path.join(path, 'OEBPS', 'Images'),
|
||||||
'cover' + getImageFileName(filelist[-1][1])[1])
|
'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)
|
buildNCX(path, options.title, chapterlist, chapterNames)
|
||||||
# Ensure we're sorting files alphabetically
|
# Ensure we're sorting files alphabetically
|
||||||
convert = lambda text: int(text) if text.isdigit() else text
|
convert = lambda text: int(text) if text.isdigit() else text
|
||||||
|
|||||||
+33
-1
@@ -144,7 +144,7 @@ class ComicPage:
|
|||||||
+ str(self.border[2]) + "-" + str(self.border[3]))
|
+ str(self.border[2]) + "-" + str(self.border[3]))
|
||||||
if forcepng:
|
if forcepng:
|
||||||
filename += ".png"
|
filename += ".png"
|
||||||
self.image.save(filename, "PNG", optimize=1)
|
self.image.save(filename, "PNG", optimize=1)
|
||||||
else:
|
else:
|
||||||
filename += ".jpg"
|
filename += ".jpg"
|
||||||
self.image.save(filename, "JPEG", optimize=1)
|
self.image.save(filename, "JPEG", optimize=1)
|
||||||
@@ -469,3 +469,35 @@ class ComicPage:
|
|||||||
else:
|
else:
|
||||||
# Detection failed
|
# Detection failed
|
||||||
return False
|
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')
|
||||||
Reference in new issue
Block a user