Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def _resized_image(self, file):
(max_width, max_height) = self._max_dimensions
file_ext = filename_extension(file)
name_tail = '.handprint' + file_ext
new_file = file if name_tail in file else filename_basename(file) + name_tail
if path.exists(new_file) and readable(new_file):
(image_width, image_height) = image_dimensions(new_file)
if image_width < max_width and image_height < max_height:
inform('Using reduced image found in {}', relative(new_file))
return new_file
else:
# We found a "-reduced" file, perhaps from a previous run, but
# for the current set of services, dimension are too large.
if __debug__: log('existing resized file larger than {}x{}: {}',
max_width, max_height, new_file)
inform('Dimensions too large; reducing dimensions: {}', relative(file))
(resized, error) = reduced_image_dimensions(file, new_file, max_width, max_height)
if error:
alert('Failed to re-dimension {}: {}', relative(file), error)
return None
return resized
def _normalized(self, orig_item, orig_fmt, item_file, dest_dir):
'''Normalize images to same format and max size.'''
# All services accept PNG, so normalize files to PNG.
to_delete = set()
file = item_file
if orig_fmt != _OUTPUT_FORMAT:
new_file = self._converted_file(file, _OUTPUT_FORMAT, dest_dir)
if new_file and path.basename(new_file) != path.basename(file):
to_delete.add(new_file)
file = new_file
# Resize if either size or dimensions are larger than accepted
if file and self._max_dimensions:
(image_width, image_height) = image_dimensions(file)
(max_width, max_height) = self._max_dimensions
if max_width < image_width or max_height < image_height:
new_file = self._resized_image(file)
if new_file and path.basename(new_file) != path.basename(file):
to_delete.add(new_file)
file = new_file
if file and self._max_size and self._max_size < image_size(file):
new_file = self._smaller_file(file)
if new_file and path.basename(new_file) != path.basename(file):
to_delete.add(new_file)
file = new_file
return Input(orig_item, orig_fmt, item_file, file, dest_dir, to_delete)