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
and sizes

If both width and height defined, crops image.

Currently, only supports PNG and JPG.
"""

@@ -197,14 +199,22 @@ class ImageThumbnailsPlugin(Plugin):
im = Image.open(resource.path)
if im.mode != '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"):
im.save(target.path, "JPEG", optimize=True, quality=75)
else:


Loading…
Cancel
Save