Browse Source

thumbnails plugin: crop image if both width and height defined

main
Grygoriy Fuchedzhy 13 years ago
committed by Lakshmi Vyasarajan
parent
commit
3b1a89bacb
1 changed files with 18 additions and 8 deletions
  1. +18
    -8
      hyde/ext/plugins/images.py

+ 18
- 8
hyde/ext/plugins/images.py View File

@@ -175,6 +175,8 @@ class ImageThumbnailsPlugin(Plugin):
which means - make from every picture two thumbnails with different prefixes which means - make from every picture two thumbnails with different prefixes
and sizes and sizes


If both width and height defined, crops image.

Currently, only supports PNG and JPG. Currently, only supports PNG and JPG.
""" """


@@ -197,14 +199,22 @@ class ImageThumbnailsPlugin(Plugin):
im = Image.open(resource.path) im = Image.open(resource.path)
if im.mode != 'RGBA': if im.mode != 'RGBA':
im = im.convert('RGBA') im = im.convert('RGBA')
# Convert to a thumbnail
if width is None:
# height is not None
width = im.size[0]*height/im.size[1] + 1
elif height is None:
# width is not None
height = im.size[1]*width/im.size[0] + 1
im.thumbnail((width, height), Image.ANTIALIAS)
resize_width = width
resize_height = height
if resize_width is None:
resize_width = im.size[0]*height/im.size[1] + 1
elif resize_height is None:
resize_height = im.size[1]*width/im.size[0] + 1
elif im.size[0]*height >= im.size[1]*width:
resize_width = im.size[0]*height/im.size[1]
else:
resize_height = im.size[1]*width/im.size[0]

im = im.resize((resize_width, resize_height), Image.ANTIALIAS)
if width is not None and height is not None:
im = im.crop((0, 0, width, height))
im.load()

if resource.name.endswith(".jpg"): if resource.name.endswith(".jpg"):
im.save(target.path, "JPEG", optimize=True, quality=75) im.save(target.path, "JPEG", optimize=True, quality=75)
else: else:


Loading…
Cancel
Save