mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Use ImageMagick instead of Qt to generate thumbnails when sending covers to device.
This commit is contained in:
parent
0c9f21ed5b
commit
0bba8cf23d
@ -9,9 +9,8 @@ from itertools import repeat
|
||||
from functools import partial
|
||||
from binascii import unhexlify
|
||||
|
||||
from PyQt4.Qt import QMenu, QAction, QActionGroup, QIcon, SIGNAL, QPixmap, \
|
||||
Qt, pyqtSignal, QColor, QPainter, QDialog, QMessageBox
|
||||
from PyQt4.QtSvg import QSvgRenderer
|
||||
from PyQt4.Qt import QMenu, QAction, QActionGroup, QIcon, SIGNAL, \
|
||||
Qt, pyqtSignal, QDialog, QMessageBox
|
||||
|
||||
from calibre.customize.ui import available_input_formats, available_output_formats, \
|
||||
device_plugins
|
||||
@ -21,7 +20,7 @@ from calibre.gui2.dialogs.choose_format import ChooseFormatDialog
|
||||
from calibre.utils.ipc.job import BaseJob
|
||||
from calibre.devices.scanner import DeviceScanner
|
||||
from calibre.gui2 import config, error_dialog, Dispatcher, dynamic, \
|
||||
pixmap_to_data, warning_dialog, \
|
||||
warning_dialog, \
|
||||
question_dialog, info_dialog, choose_dir
|
||||
from calibre.ebooks.metadata import authors_to_string
|
||||
from calibre import preferred_encoding, prints
|
||||
@ -34,7 +33,7 @@ from calibre.devices.folder_device.driver import FOLDER_DEVICE
|
||||
from calibre.ebooks.metadata.meta import set_metadata
|
||||
from calibre.constants import DEBUG
|
||||
from calibre.utils.config import prefs, tweaks
|
||||
|
||||
from calibre.utils.magick.draw import thumbnail
|
||||
# }}}
|
||||
|
||||
class DeviceJob(BaseJob): # {{{
|
||||
@ -617,14 +616,8 @@ class DeviceMixin(object): # {{{
|
||||
self.connect_to_folder_named(tweaks['auto_connect_to_folder'])
|
||||
|
||||
def set_default_thumbnail(self, height):
|
||||
r = QSvgRenderer(I('book.png'))
|
||||
pixmap = QPixmap(height, height)
|
||||
pixmap.fill(QColor(255,255,255))
|
||||
p = QPainter(pixmap)
|
||||
r.render(p)
|
||||
p.end()
|
||||
self.default_thumbnail = (pixmap.width(), pixmap.height(),
|
||||
pixmap_to_data(pixmap))
|
||||
img = I('book.png', data=True)
|
||||
self.default_thumbnail = thumbnail(img, height, height)
|
||||
|
||||
def connect_to_folder_named(self, folder):
|
||||
if os.path.exists(folder) and os.path.isdir(folder):
|
||||
@ -959,13 +952,12 @@ class DeviceMixin(object): # {{{
|
||||
self.library_view.model().delete_books_by_id(remove)
|
||||
|
||||
def cover_to_thumbnail(self, data):
|
||||
p = QPixmap()
|
||||
p.loadFromData(data)
|
||||
if not p.isNull():
|
||||
ht = self.device_manager.device.THUMBNAIL_HEIGHT \
|
||||
if self.device_manager else DevicePlugin.THUMBNAIL_HEIGHT
|
||||
p = p.scaledToHeight(ht, Qt.SmoothTransformation)
|
||||
return (p.width(), p.height(), pixmap_to_data(p))
|
||||
ht = self.device_manager.device.THUMBNAIL_HEIGHT \
|
||||
if self.device_manager else DevicePlugin.THUMBNAIL_HEIGHT
|
||||
try:
|
||||
return thumbnail(data, ht, ht)
|
||||
except:
|
||||
pass
|
||||
|
||||
def email_news(self, id):
|
||||
opts = email_config().parse()
|
||||
|
@ -8,6 +8,7 @@ __docformat__ = 'restructuredtext en'
|
||||
|
||||
from calibre.utils.magick import Image, DrawingWand, create_canvas
|
||||
from calibre.constants import __appname__, __version__
|
||||
from calibre import fit_image
|
||||
|
||||
def save_cover_data_to(data, path, bgcolor='white', resize_to=None):
|
||||
'''
|
||||
@ -23,6 +24,17 @@ def save_cover_data_to(data, path, bgcolor='white', resize_to=None):
|
||||
canvas.compose(img)
|
||||
canvas.save(path)
|
||||
|
||||
def thumbnail(data, width=120, height=120, bgcolor='white', fmt='jpg'):
|
||||
img = Image()
|
||||
img.load(data)
|
||||
owidth, oheight = img.size
|
||||
scaled, nwidth, nheight = fit_image(owidth, oheight, width, height)
|
||||
if scaled:
|
||||
img.size = (nwidth, nheight)
|
||||
canvas = create_canvas(img.size[0], img.size[1], bgcolor)
|
||||
canvas.compose(img)
|
||||
return (canvas.size[0], canvas.size[1], canvas.export(fmt))
|
||||
|
||||
def identify_data(data):
|
||||
'''
|
||||
Identify the image in data. Returns a 3-tuple
|
||||
|
Loading…
x
Reference in New Issue
Block a user