| @@ -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: | ||||