mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Get rid of ImageMagick in a couple of other places as well
This commit is contained in:
parent
4658a45c83
commit
3e53d5fc07
@ -32,7 +32,7 @@ from calibre.devices.folder_device.driver import FOLDER_DEVICE
|
|||||||
from calibre.devices.bambook.driver import BAMBOOK, BAMBOOKWifi
|
from calibre.devices.bambook.driver import BAMBOOK, BAMBOOKWifi
|
||||||
from calibre.constants import DEBUG
|
from calibre.constants import DEBUG
|
||||||
from calibre.utils.config import tweaks, device_prefs
|
from calibre.utils.config import tweaks, device_prefs
|
||||||
from calibre.utils.magick.draw import thumbnail
|
from calibre.utils.img import scale_image
|
||||||
from calibre.library.save_to_disk import find_plugboard
|
from calibre.library.save_to_disk import find_plugboard
|
||||||
from calibre.ptempfile import PersistentTemporaryFile, force_unicode as filename_to_unicode
|
from calibre.ptempfile import PersistentTemporaryFile, force_unicode as filename_to_unicode
|
||||||
# }}}
|
# }}}
|
||||||
@ -926,7 +926,7 @@ class DeviceMixin(object): # {{{
|
|||||||
|
|
||||||
def set_default_thumbnail(self, height):
|
def set_default_thumbnail(self, height):
|
||||||
img = I('book.png', data=True)
|
img = I('book.png', data=True)
|
||||||
self.default_thumbnail = thumbnail(img, height, height)
|
self.default_thumbnail = scale_image(img, height, height, preserve_aspect_ratio=False)
|
||||||
|
|
||||||
def connect_to_folder_named(self, folder):
|
def connect_to_folder_named(self, folder):
|
||||||
if os.path.exists(folder) and os.path.isdir(folder):
|
if os.path.exists(folder) and os.path.isdir(folder):
|
||||||
@ -1282,7 +1282,7 @@ class DeviceMixin(object): # {{{
|
|||||||
if self.device_manager.device and \
|
if self.device_manager.device and \
|
||||||
hasattr(self.device_manager.device, 'THUMBNAIL_WIDTH'):
|
hasattr(self.device_manager.device, 'THUMBNAIL_WIDTH'):
|
||||||
try:
|
try:
|
||||||
return thumbnail(data,
|
return scale_image(data,
|
||||||
self.device_manager.device.THUMBNAIL_WIDTH,
|
self.device_manager.device.THUMBNAIL_WIDTH,
|
||||||
self.device_manager.device.THUMBNAIL_HEIGHT,
|
self.device_manager.device.THUMBNAIL_HEIGHT,
|
||||||
preserve_aspect_ratio=False)
|
preserve_aspect_ratio=False)
|
||||||
@ -1292,7 +1292,7 @@ class DeviceMixin(object): # {{{
|
|||||||
ht = self.device_manager.device.THUMBNAIL_HEIGHT \
|
ht = self.device_manager.device.THUMBNAIL_HEIGHT \
|
||||||
if self.device_manager else DevicePlugin.THUMBNAIL_HEIGHT
|
if self.device_manager else DevicePlugin.THUMBNAIL_HEIGHT
|
||||||
try:
|
try:
|
||||||
return thumbnail(data, ht, ht,
|
return scale_image(data, ht, ht,
|
||||||
compression_quality=self.device_manager.device.THUMBNAIL_COMPRESSION_QUALITY)
|
compression_quality=self.device_manager.device.THUMBNAIL_COMPRESSION_QUALITY)
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
@ -13,7 +13,7 @@ from Queue import Queue
|
|||||||
|
|
||||||
from calibre import browser
|
from calibre import browser
|
||||||
from calibre.constants import DEBUG
|
from calibre.constants import DEBUG
|
||||||
from calibre.utils.magick.draw import thumbnail
|
from calibre.utils.img import scale_image
|
||||||
|
|
||||||
class GenericDownloadThreadPool(object):
|
class GenericDownloadThreadPool(object):
|
||||||
'''
|
'''
|
||||||
@ -161,7 +161,7 @@ class CoverThread(Thread):
|
|||||||
if result and result.cover_url:
|
if result and result.cover_url:
|
||||||
with closing(self.br.open(result.cover_url, timeout=timeout)) as f:
|
with closing(self.br.open(result.cover_url, timeout=timeout)) as f:
|
||||||
result.cover_data = f.read()
|
result.cover_data = f.read()
|
||||||
result.cover_data = thumbnail(result.cover_data, 64, 64)[2]
|
result.cover_data = scale_image(result.cover_data, 64, 64)[2]
|
||||||
callback()
|
callback()
|
||||||
self.tasks.task_done()
|
self.tasks.task_done()
|
||||||
except:
|
except:
|
||||||
|
@ -16,10 +16,11 @@ def image_from_data(data):
|
|||||||
return i
|
return i
|
||||||
|
|
||||||
def scale_image(data, width=60, height=80, compression_quality=70, as_png=False, preserve_aspect_ratio=True):
|
def scale_image(data, width=60, height=80, compression_quality=70, as_png=False, preserve_aspect_ratio=True):
|
||||||
|
''' Scale an image, returning it as either JPEG or PNG data (bytestring).
|
||||||
|
Transparency is alpha blended with white when converting to JPEG. Is thread
|
||||||
|
safe and does not require a QApplication. '''
|
||||||
# We use Qt instead of ImageMagick here because ImageMagick seems to use
|
# We use Qt instead of ImageMagick here because ImageMagick seems to use
|
||||||
# some kind of memory pool, causing memory consumption to sky rocket. Since
|
# some kind of memory pool, causing memory consumption to sky rocket.
|
||||||
# we are only using QImage this method is thread safe, and does not require
|
|
||||||
# a QApplication/GUI thread
|
|
||||||
if isinstance(data, QImage):
|
if isinstance(data, QImage):
|
||||||
img = data
|
img = data
|
||||||
else:
|
else:
|
||||||
@ -47,5 +48,3 @@ def scale_image(data, width=60, height=80, compression_quality=70, as_png=False,
|
|||||||
if not img.save(buf, fmt, quality=compression_quality):
|
if not img.save(buf, fmt, quality=compression_quality):
|
||||||
raise ValueError('Failed to export thumbnail image to: ' + fmt)
|
raise ValueError('Failed to export thumbnail image to: ' + fmt)
|
||||||
return img.width(), img.height(), ba.data()
|
return img.width(), img.height(), ba.data()
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user