TIMEX
TIMEX

Reputation: 271774

How do I modify my Python image resizer code to do this?

When I resize a picture that is smaller than desired, I want the image to NOT get resized...but instead be in the center, with white padding around it.

So, let's say I have an icon that's 50x50. But I want to resize it to 100x100. If I pass it to this function, I would like it to return me the same icon that is centered, with white padding 25 pixels on each side.

Of course, I'd like this to work with images of any width/height, and not just a square like the example above.

My current code is below.

I don't know why I did if height=None: height=width...I think it was just because it worked when I did it before.

def create_thumbnail(f, width=200, height=None):
    if height==None: height=width
    im = Image.open(StringIO(f))
    imagex = int(im.size[0])
    imagey = int(im.size[1])
    if imagex < width or imagey < height:
        return None
    if im.mode not in ('L', 'RGB', 'RGBA'):
        im = im.convert('RGB')
    im.thumbnail((width, height), Image.ANTIALIAS)
    thumbnail_file = StringIO()
    im.save(thumbnail_file, 'JPEG')
    thumbnail_file.seek(0)
    return thumbnail_file

This code may have many bugs in it, not sure.

Upvotes: 0

Views: 345

Answers (1)

DGH
DGH

Reputation: 11539

One option is to create a blank white image of the size you want, then draw the existing image in the center.

Upvotes: 3

Related Questions