Mercurial > personas_backend
changeset 139:be98236e2b34
Added a function to generate thumbnails, although it's not currently being used anywhere.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Thu, 03 Apr 2008 22:25:58 -0700 |
parents | eb025a398f16 |
children | e48318d2ff8a |
files | personasbackend/personas/models.py |
diffstat | 1 files changed, 49 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/personasbackend/personas/models.py Thu Apr 03 14:50:37 2008 -0700 +++ b/personasbackend/personas/models.py Thu Apr 03 22:25:58 2008 -0700 @@ -66,6 +66,55 @@ NO_THUMBNAIL_IMAGE = "https://addons.mozilla.org/img/addon-icn.png" +def generate_thumbnail( header_file, footer_file ): + """ + Given a header and footer file--which can be either file-like + objects or absolute paths to files--returns a PIL image + representing the Persona's thumbnail. + """ + + import Image + + header = Image.open( header_file ) + footer = Image.open( footer_file ) + + # Downsample the header and footer to 50% of original size. + + header = header.resize( (header.size[0] / 2, + header.size[1] / 2), + Image.ANTIALIAS ) + footer = footer.resize( (footer.size[0] / 2, + footer.size[1] / 2), + Image.ANTIALIAS ) + + # Crop the rightmost 1/3 of the header. + + one_third_header = header.size[0] / 3 + header = header.crop( (header.size[0] - one_third_header, + 0, + header.size[0], + header.size[1]) ) + + # Crop the leftmost 1/3 of the footer. + + one_third_footer = footer.size[0] / 3 + footer = footer.crop( (0, + 0, + one_third_footer, + footer.size[1]) ) + + # Return an image that consists of the header and footer pasted + # together. + + thumbnail = Image.new( + "RGB", + ( header.size[0], header.size[1] + footer.size[1] ) + ) + thumbnail.paste( header, (0, 0) ) + thumbnail.paste( footer, (0, header.size[1]) ) + + return thumbnail + def parse_personas_view_url( url ): """ TODO: Document this.