Fix #5379 (ebook-convert rename a png image cover to jpg)

This commit is contained in:
Kovid Goyal 2010-04-26 09:26:57 -06:00
parent e72ce2c29f
commit 8ab61a3a0a
2 changed files with 12 additions and 7 deletions

View File

@ -676,7 +676,10 @@ OptionRecommendation(name='timestamp',
if mi.cover: if mi.cover:
if mi.cover.startswith('http:') or mi.cover.startswith('https:'): if mi.cover.startswith('http:') or mi.cover.startswith('https:'):
mi.cover = self.download_cover(mi.cover) 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 mi.cover = None
self.user_metadata = mi self.user_metadata = mi

View File

@ -8,6 +8,7 @@ __docformat__ = 'restructuredtext en'
import os import os
from calibre.utils.date import isoformat, now from calibre.utils.date import isoformat, now
from calibre import guess_type
def meta_info_to_oeb_metadata(mi, m, log): def meta_info_to_oeb_metadata(mi, m, log):
from calibre.ebooks.oeb.base import OPF from calibre.ebooks.oeb.base import OPF
@ -92,15 +93,16 @@ class MergeMetadata(object):
scheme='uuid') scheme='uuid')
self.oeb.uid = self.oeb.metadata.identifier[-1] self.oeb.uid = self.oeb.metadata.identifier[-1]
def set_cover(self, mi, prefer_metadata_cover): def set_cover(self, mi, prefer_metadata_cover):
cdata = '' cdata, ext = '', 'jpg'
if mi.cover and os.access(mi.cover, os.R_OK): if mi.cover and os.access(mi.cover, os.R_OK):
cdata = open(mi.cover, 'rb').read() cdata = open(mi.cover, 'rb').read()
ext = mi.cover.rpartition('.')[-1].lower().strip()
elif mi.cover_data and mi.cover_data[-1]: elif mi.cover_data and mi.cover_data[-1]:
cdata = 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 id = old_cover = None
if 'cover' in self.oeb.guide: if 'cover' in self.oeb.guide:
old_cover = self.oeb.guide['cover'] old_cover = self.oeb.guide['cover']
@ -120,8 +122,8 @@ class MergeMetadata(object):
self.oeb.manifest.add(id, old_cover.href, 'image/jpeg') self.oeb.manifest.add(id, old_cover.href, 'image/jpeg')
return id return id
if cdata: if cdata:
id, href = self.oeb.manifest.generate('cover', 'cover.jpg') id, href = self.oeb.manifest.generate('cover', 'cover.'+ext)
self.oeb.manifest.add(id, href, 'image/jpeg', data=cdata) self.oeb.manifest.add(id, href, guess_type('cover.'+ext)[0], data=cdata)
self.oeb.guide.add('cover', 'Cover', href) self.oeb.guide.add('cover', 'Cover', href)
return id return id