Login

thumbnail an image

Author:
limodou
Posted:
February 25, 2007
Language:
Python
Version:
Pre .96
Tags:
image
Score:
22 (after 26 ratings)

Thumbnail an image.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from PIL import Image
import os.path
import StringIO

def thumbnail(filename, size=(50, 50), output_filename=None):
    image = Image.open(filename)
    if image.mode not in ('L', 'RGB'):
        image = image.convert('RGB')
    image = image.resize(size, Image.ANTIALIAS)

    # get the thumbnail data in memory.
    if not output_filename:
        output_filename = get_default_thumbnail_filename(filename)
    image.save(output_filename, image.format) 
    return output_filename

def thumbnail_string(buf, size=(50, 50)):
    f = StringIO.StringIO(buf)
    image = Image.open(f)
    if image.mode not in ('L', 'RGB'):
        image = image.convert('RGB')
    image = image.resize(size, Image.ANTIALIAS)
    o = StringIO.StringIO()
    image.save(o, "JPEG")
    return o.getvalue()
    
def get_default_thumbnail_filename(filename):
    path, ext = os.path.splitext(filename)
    return path + '.thumb.jpg'

More like this

Comments

Fredrik (on February 27, 2007):
<p>To avoid extra copies, I'd recommend changing</p> <pre>image = Image.open(filename) image = image.convert('RGB') image = image.resize(size, Image.ANTIALIAS) </pre> <p>to</p> <pre>image = Image.open(filename) if image.mode not in ("L", "RGB"): image = image.convert('RGB') image = image.resize(size, Image.ANTIALIAS) </pre> <p>The </p> <pre>image.save(file(output_filename, 'wb') ... </pre> <p>thing is also unnecessary; save() takes either a filename or a file object, so there's no need to open it yourself.</p> <p>Cheers /F</p>

#

limodou (on February 27, 2007):
<p>thanks</p>

#

marioparris (on June 7, 2007):
<p>Also, change line 13 from: output_filename = get_default_thumbnail_filename(output_filename)</p> <p>to: output_filename = get_default_thumbnail_filename(filename)</p> <p>so it uses the filename of the file you are thumbnailing. If output_filename is None by default, then that causes a problem ;)</p>

#

limodou (on August 2, 2007):
<p>thanks to marioparris, I'v changed it.</p>

#

dolilmao (on April 13, 2014):
<p>I have been looking for somethink similar to this glad I found it</p>

#

Please login first before commenting.