skip image resizing if possible
This commit is contained in:
parent
e002452f91
commit
e2b5634549
@ -269,7 +269,7 @@ class MediaEntry(Base, MediaEntryMixin):
|
||||
return the value of the key.
|
||||
"""
|
||||
media_file = MediaFile.query.filter_by(media_entry=self.id,
|
||||
name=file_key).first()
|
||||
name=unicode(file_key)).first()
|
||||
|
||||
if media_file:
|
||||
if metadata_key:
|
||||
@ -282,7 +282,7 @@ class MediaEntry(Base, MediaEntryMixin):
|
||||
Update the file_metadata of a MediaFile.
|
||||
"""
|
||||
media_file = MediaFile.query.filter_by(media_entry=self.id,
|
||||
name=file_key).first()
|
||||
name=unicode(file_key)).first()
|
||||
|
||||
file_metadata = media_file.file_metadata or {}
|
||||
|
||||
|
@ -76,6 +76,14 @@ def resize_image(entry, resized, keyname, target_name, new_size,
|
||||
resized.save(resized_file, quality=quality)
|
||||
store_public(entry, keyname, tmp_resized_filename, target_name)
|
||||
|
||||
# store the thumb/medium info
|
||||
image_info = {'width': new_size[0],
|
||||
'height': new_size[1],
|
||||
'quality': quality,
|
||||
'filter': filter}
|
||||
|
||||
entry.set_file_metadata(keyname, **image_info)
|
||||
|
||||
|
||||
def resize_tool(entry,
|
||||
force, keyname, orig_file, target_name,
|
||||
@ -86,6 +94,13 @@ def resize_tool(entry,
|
||||
max_height = mgg.global_config['media:' + keyname]['max_height']
|
||||
new_size = (max_width, max_height)
|
||||
|
||||
# If thumb or medium is already the same quality and size, then don't
|
||||
# reprocess
|
||||
if _skip_resizing(entry, keyname, new_size, quality, filter):
|
||||
_log.info('{0} of same size and quality already in use, skipping '
|
||||
'resizing of media {1}.'.format(keyname, entry.id))
|
||||
return
|
||||
|
||||
# If the size of the original file exceeds the specified size for the desized
|
||||
# file, a target_name file is created and later associated with the media
|
||||
# entry.
|
||||
@ -105,6 +120,32 @@ def resize_tool(entry,
|
||||
quality, filter)
|
||||
|
||||
|
||||
def _skip_resizing(entry, keyname, size, quality, filter):
|
||||
"""
|
||||
Determines wither the saved thumb or medium is of the same quality and size
|
||||
"""
|
||||
image_info = entry.get_file_metadata(keyname)
|
||||
|
||||
if not image_info:
|
||||
return False
|
||||
|
||||
skip = True
|
||||
|
||||
if image_info.get('width') != size[0]:
|
||||
skip = False
|
||||
|
||||
elif image_info.get('height') != size[1]:
|
||||
skip = False
|
||||
|
||||
elif image_info.get('filter') != filter:
|
||||
skip = False
|
||||
|
||||
elif image_info.get('quality') != quality:
|
||||
skip = False
|
||||
|
||||
return skip
|
||||
|
||||
|
||||
SUPPORTED_FILETYPES = ['png', 'gif', 'jpg', 'jpeg', 'tiff']
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user