From c91e321f42b059ac2e6a4d64edd67f5feaafcf59 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 12 May 2017 19:50:06 +0530 Subject: [PATCH] Workaround for Qt 5.6 bug on windows that broke exporting QPixmap to PNG --- src/calibre/gui2/__init__.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index ebb23654be..4e8eb371e5 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -818,10 +818,19 @@ def choose_osx_app(window, name, title, default_dir='/Applications'): return app -def pixmap_to_data(pixmap, format='JPEG', quality=90): +def pixmap_to_data(pixmap, format='JPEG', quality=None): ''' Return the QPixmap pixmap as a string saved in the specified format. ''' + if quality is None: + if format.upper() == "PNG": + # For some reason on windows with Qt 5.6 using a quality of 90 + # generates invalid PNG data. Many other quality values work + # but we use -1 for the default quality which is most likely to + # work + quality = -1 + else: + quality = 90 ba = QByteArray() buf = QBuffer(ba) buf.open(QBuffer.WriteOnly)