From efcd5b78ae6989dc444e7b27d5a6db8b7b69a590 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 23 Feb 2016 11:37:21 +0530 Subject: [PATCH] FB2 metadata: Ignore invalid (unidentifiable) cover images. See #1548417 (Exception: Read Exception `' @ error/png.c/MagickPNGErrorHandler/1630) --- src/calibre/ebooks/metadata/fb2.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/calibre/ebooks/metadata/fb2.py b/src/calibre/ebooks/metadata/fb2.py index 449bfa931d..4271fdfaea 100644 --- a/src/calibre/ebooks/metadata/fb2.py +++ b/src/calibre/ebooks/metadata/fb2.py @@ -13,7 +13,7 @@ from base64 import b64encode from lxml import etree from calibre.utils.date import parse_only_date -from calibre.utils.magick.draw import save_cover_data_to +from calibre.utils.magick.draw import save_cover_data_to, identify_data from calibre import guess_type, guess_all_extensions, prints, force_unicode from calibre.ebooks.metadata import MetaInformation, check_isbn from calibre.ebooks.chardet import xml_to_unicode @@ -210,8 +210,9 @@ def _parse_cover_data(root, imgid, mi, ctx): if mime_extensions: pic_data = elm_binary[0].text if pic_data: - mi.cover_data = (mime_extensions[0][1:], - base64_decode(pic_data.strip())) + cdata = base64_decode(pic_data.strip()) + fmt = identify_data(cdata)[-1] + mi.cover_data = (fmt, cdata) else: prints("WARNING: Unsupported coverpage mime-type '%s' (id=#%s)" % (mimetype, imgid))