From ccffbd6715986ac8657f4f11246a09c24971825e Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 17 Feb 2012 21:24:47 +0530 Subject: [PATCH] RTF Input: Fix some WMF images embedded in RTF files being distorted on conversion. Fixes #934167 (Enhancement to convert pictures in rtf files) --- src/calibre/utils/wmf/parse.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/calibre/utils/wmf/parse.py b/src/calibre/utils/wmf/parse.py index 9dc035d3e1..7e176311d2 100644 --- a/src/calibre/utils/wmf/parse.py +++ b/src/calibre/utils/wmf/parse.py @@ -246,6 +246,19 @@ class WMF(object): def to_png(self): bmps = list(sorted(self.bitmaps, key=lambda x: len(x))) bmp = bmps[-1] + + # ImageMagick does not convert some bmp files correctly, while Qt does, + # so try Qt first. See for instance: + # https://bugs.launchpad.net/calibre/+bug/934167 + from PyQt4.Qt import QImage, QByteArray, QBuffer + i = QImage() + if i.loadFromData(bmp): + ba = QByteArray() + buf = QBuffer(ba) + buf.open(QBuffer.WriteOnly) + i.save(buf, 'png') + return bytes(ba.data()) + from calibre.utils.magick import Image img = Image() img.load(bmp)