diff options
author | Paweł Jastrzębski <pawelj@iosphe.re> | 2014-07-18 10:29:14 +0200 |
---|---|---|
committer | Paweł Jastrzębski <pawelj@iosphe.re> | 2014-07-18 10:29:14 +0200 |
commit | 15a240cceae92552e7d0a6e5d3529fd24dbd9434 (patch) | |
tree | f176a3435f33c16d48a6c7eb9685569ca29c2616 /kcc/image.py | |
parent | Updated README (diff) | |
parent | Updated README + version bump (diff) | |
download | kcc-15a240cceae92552e7d0a6e5d3529fd24dbd9434.tar.gz kcc-15a240cceae92552e7d0a6e5d3529fd24dbd9434.tar.bz2 kcc-15a240cceae92552e7d0a6e5d3529fd24dbd9434.zip |
Merge pull request #103 from ciromattia/4.x
Version 4.2
Diffstat (limited to '')
-rwxr-xr-x | kcc/image.py | 43 |
1 files changed, 35 insertions, 8 deletions
diff --git a/kcc/image.py b/kcc/image.py index 5b54bbd..f8abfe6 100755 --- a/kcc/image.py +++ b/kcc/image.py @@ -16,11 +16,14 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. +__version__ = '4.2' __license__ = 'ISC' __copyright__ = '2012-2014, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>' __docformat__ = 'restructuredtext en' import os +from io import BytesIO +from urllib.request import Request, urlopen from functools import reduce from PIL import Image, ImageOps, ImageStat, ImageChops from .shared import md5Checksum @@ -472,14 +475,37 @@ class ComicPage: class Cover: - def __init__(self, source, target): + def __init__(self, source, target, opt, tomeNumber): + self.options = opt self.source = source self.target = target - self.image = Image.open(source) + if tomeNumber == 0: + self.tomeNumber = 1 + else: + self.tomeNumber = tomeNumber + if self.tomeNumber in self.options.remoteCovers: + try: + source = urlopen(Request(self.options.remoteCovers[self.tomeNumber], + headers={'User-Agent': 'KindleComicConverter/' + __version__})).read() + self.image = Image.open(BytesIO(source)) + self.processExternal() + except Exception: + self.image = Image.open(source) + self.processInternal() + else: + self.image = Image.open(source) + self.processInternal() + + def processInternal(self): self.image = self.image.convert('RGB') - self.process() + self.image = self.trim() self.save() + def processExternal(self): + self.image = self.image.convert('RGB') + self.image.thumbnail(self.options.profileData[1], Image.ANTIALIAS) + self.save(True) + def trim(self): bg = Image.new(self.image.mode, self.image.size, self.image.getpixel((0, 0))) diff = ImageChops.difference(self.image, bg) @@ -490,12 +516,13 @@ class Cover: else: return self.image - def process(self): - self.image = self.trim() - - def save(self): + def save(self, external=False): + if external: + source = self.options.remoteCovers[self.tomeNumber].split('/')[-1] + else: + source = self.source try: - if os.path.splitext(self.source)[1].lower() == '.png': + if os.path.splitext(source)[1].lower() == '.png': self.image.save(self.target, "PNG", optimize=1) else: self.image.save(self.target, "JPEG", optimize=1) |