From 8ab61a3a0a470237f61f65c9a5e5bf2bfdfcd9d5 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 26 Apr 2010 09:26:57 -0600 Subject: [PATCH] Fix #5379 (ebook-convert rename a png image cover to jpg) --- src/calibre/ebooks/conversion/plumber.py | 5 ++++- src/calibre/ebooks/oeb/transforms/metadata.py | 14 ++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/calibre/ebooks/conversion/plumber.py b/src/calibre/ebooks/conversion/plumber.py index ec14fb6cfb..55a853f1d2 100644 --- a/src/calibre/ebooks/conversion/plumber.py +++ b/src/calibre/ebooks/conversion/plumber.py @@ -676,7 +676,10 @@ OptionRecommendation(name='timestamp', if mi.cover: if mi.cover.startswith('http:') or mi.cover.startswith('https:'): mi.cover = self.download_cover(mi.cover) - mi.cover_data = ('', open(mi.cover, 'rb').read()) + ext = mi.cover.rpartition('.')[-1].lower().strip() + if ext not in ('png', 'jpg', 'jpeg'): + ext = 'jpg' + mi.cover_data = (ext, open(mi.cover, 'rb').read()) mi.cover = None self.user_metadata = mi diff --git a/src/calibre/ebooks/oeb/transforms/metadata.py b/src/calibre/ebooks/oeb/transforms/metadata.py index 97bad07a58..22a89f5a47 100644 --- a/src/calibre/ebooks/oeb/transforms/metadata.py +++ b/src/calibre/ebooks/oeb/transforms/metadata.py @@ -8,6 +8,7 @@ __docformat__ = 'restructuredtext en' import os from calibre.utils.date import isoformat, now +from calibre import guess_type def meta_info_to_oeb_metadata(mi, m, log): from calibre.ebooks.oeb.base import OPF @@ -92,15 +93,16 @@ class MergeMetadata(object): scheme='uuid') self.oeb.uid = self.oeb.metadata.identifier[-1] - - - def set_cover(self, mi, prefer_metadata_cover): - cdata = '' + cdata, ext = '', 'jpg' if mi.cover and os.access(mi.cover, os.R_OK): cdata = open(mi.cover, 'rb').read() + ext = mi.cover.rpartition('.')[-1].lower().strip() elif mi.cover_data and mi.cover_data[-1]: cdata = mi.cover_data[1] + ext = mi.cover_data[0] + if ext not in ('png', 'jpg', 'jpeg'): + ext = 'jpg' id = old_cover = None if 'cover' in self.oeb.guide: old_cover = self.oeb.guide['cover'] @@ -120,8 +122,8 @@ class MergeMetadata(object): self.oeb.manifest.add(id, old_cover.href, 'image/jpeg') return id if cdata: - id, href = self.oeb.manifest.generate('cover', 'cover.jpg') - self.oeb.manifest.add(id, href, 'image/jpeg', data=cdata) + id, href = self.oeb.manifest.generate('cover', 'cover.'+ext) + self.oeb.manifest.add(id, href, guess_type('cover.'+ext)[0], data=cdata) self.oeb.guide.add('cover', 'Cover', href) return id