def image_and_format_from_data(data): ba = QByteArray(data) buf = QBuffer(ba) buf.open(QBuffer.ReadOnly) r = QImageReader(buf) fmt = bytes(r.format()).decode("utf-8") return r.read(), fmt
def image_and_format_from_data(data): ' Create an image object from the specified data which should be a bytsestring and also return the format of the image ' ba = QByteArray(data) buf = QBuffer(ba) buf.open(QBuffer.ReadOnly) r = QImageReader(buf) fmt = bytes(r.format()).decode('utf-8') return r.read(), fmt
def verify_theme(report): must_use_qt() report.bad = bad = {} for name, path in iteritems(report.name_map): reader = QImageReader(os.path.join(report.path, path)) img = reader.read() if img.isNull(): bad[name] = reader.errorString() return bool(bad)
def verify_theme(report): must_use_qt() report.bad = bad = {} for name, path in report.name_map.iteritems(): reader = QImageReader(os.path.join(report.path, path)) img = reader.read() if img.isNull(): bad[name] = reader.errorString() return bool(bad)
def test_qt(self): from PyQt5.Qt import QImageReader, QNetworkAccessManager, QFontDatabase from calibre.utils.img import image_from_data, image_to_data, test # Ensure that images can be read before QApplication is constructed. # Note that this requires QCoreApplication.libraryPaths() to return the # path to the Qt plugins which it always does in the frozen build, # because the QT_PLUGIN_PATH env var is set. On non-frozen builds, # it should just work because the hard-coded paths of the Qt # installation should work. If they do not, then it is a distro # problem. fmts = set(map(unicode, QImageReader.supportedImageFormats())) testf = {'jpg', 'png', 'svg', 'ico', 'gif'} self.assertEqual(testf.intersection(fmts), testf, "Qt doesn't seem to be able to load some of its image plugins. Available plugins: %s" % fmts) data = I('blank.png', allow_user_override=False, data=True) img = image_from_data(data) image_from_data(P('catalog/mastheadImage.gif', allow_user_override=False, data=True)) for fmt in 'png bmp jpeg'.split(): d = image_to_data(img, fmt=fmt) image_from_data(d) # Run the imaging tests test() from calibre.gui2 import Application os.environ.pop('DISPLAY', None) app = Application([], headless=islinux) self.assertGreaterEqual(len(QFontDatabase().families()), 5, 'The QPA headless plugin is not able to locate enough system fonts via fontconfig') na = QNetworkAccessManager() self.assertTrue(hasattr(na, 'sslErrors'), 'Qt not compiled with openssl') from PyQt5.QtWebKitWidgets import QWebView QWebView() del QWebView del na del app
def image_extensions(): if not hasattr(image_extensions, 'ans'): image_extensions.ans = [ as_unicode_polyglot(x) for x in QImageReader.supportedImageFormats() ] return image_extensions.ans
def image_extensions(): if not hasattr(image_extensions, 'ans'): image_extensions.ans = [ x.data().decode('utf-8') for x in QImageReader.supportedImageFormats() ] return image_extensions.ans
def test_qt(self): from PyQt5.Qt import QImageReader, QNetworkAccessManager, QFontDatabase from calibre.utils.img import image_from_data, image_to_data, test # Ensure that images can be read before QApplication is constructed. # Note that this requires QCoreApplication.libraryPaths() to return the # path to the Qt plugins which it always does in the frozen build, # because the QT_PLUGIN_PATH env var is set. On non-frozen builds, # it should just work because the hard-coded paths of the Qt # installation should work. If they do not, then it is a distro # problem. fmts = set( map(lambda x: x.data().decode('utf-8'), QImageReader.supportedImageFormats())) testf = {'jpg', 'png', 'svg', 'ico', 'gif'} self.assertEqual( testf.intersection(fmts), testf, "Qt doesn't seem to be able to load some of its image plugins. Available plugins: %s" % fmts) data = P('images/blank.png', allow_user_override=False, data=True) img = image_from_data(data) image_from_data( P('catalog/mastheadImage.gif', allow_user_override=False, data=True)) for fmt in 'png bmp jpeg'.split(): d = image_to_data(img, fmt=fmt) image_from_data(d) # Run the imaging tests test() from calibre.gui2 import Application os.environ.pop('DISPLAY', None) has_headless = isosx or islinux app = Application([], headless=has_headless) self.assertGreaterEqual( len(QFontDatabase().families()), 5, 'The QPA headless plugin is not able to locate enough system fonts via fontconfig' ) if has_headless: from calibre.ebooks.covers import create_cover create_cover('xxx', ['yyy']) na = QNetworkAccessManager() self.assertTrue(hasattr(na, 'sslErrors'), 'Qt not compiled with openssl') from PyQt5.QtWebKitWidgets import QWebView if iswindows: from PyQt5.Qt import QtWin QtWin QWebView() del QWebView del na del app
def _insert_image(self): filedialog = QFileDialog(self) filedialog.setOption(QFileDialog.DontUseNativeDialog) filedialog.setDefaultSuffix("*.jpg") filedialog.setDirectory(self._cfg.get( "TextEditor/LastPath", ".", system=True)) type_files = ( self.tr("JPEG (*.jpg)"), self.tr("GIF (*.gif)"), self.tr("PNG (*.png)"), self.tr("BMP (*.bmp)"), self.tr("All files (*)"), ) filedialog.setNameFilters(type_files) if filedialog.exec_(): path = filedialog.selectedFiles()[0] fmt = path.split(".")[-1] image = QImageReader(path).read() self._doc.ins_image(image, fmt, image.width(), image.height()) self._cfg["SYSTEM", "TextEditor/LastPath"] = ( os.path.dirname(path))
def test_qt(): from calibre.gui2 import Application from PyQt5.Qt import (QImageReader, QNetworkAccessManager, QFontDatabase) from PyQt5.QtWebKitWidgets import QWebView os.environ.pop('DISPLAY', None) app = Application([], headless=islinux) if len(QFontDatabase().families()) < 5: raise RuntimeError('The QPA headless plugin is not able to locate enough system fonts via fontconfig') fmts = set(map(unicode, QImageReader.supportedImageFormats())) testf = set(['jpg', 'png', 'mng', 'svg', 'ico', 'gif']) if testf.intersection(fmts) != testf: raise RuntimeError( "Qt doesn't seem to be able to load its image plugins") QWebView() del QWebView na = QNetworkAccessManager() if not hasattr(na, 'sslErrors'): raise RuntimeError('Qt not compiled with openssl') del na del app print ('Qt OK!')
def image_extensions(): if not hasattr(image_extensions, 'ans'): image_extensions.ans = [as_unicode_polyglot(x) for x in QImageReader.supportedImageFormats()] return image_extensions.ans
def image_extensions(): if not hasattr(image_extensions, 'ans'): image_extensions.ans = [bytes(x).decode('utf-8') for x in QImageReader.supportedImageFormats()] return image_extensions.ans