2010-11-30 24 views
0

当我调整小于预期的图片的大小时,我希望图片不会被调整大小......但是应该放在中间,并用白色填充。如何修改我的Python图像调整器代码来执行此操作?

因此,假设我有一个50x50的图标。但我想调整到100x100。如果我将它传递给这个函数,我希望它返回中心的相同图标,每边都有白色填充25像素。

当然,我希望能够处理任何宽度/高度的图像,而不仅仅是像上面例子那样的方形。

我目前的代码如下。

我不知道我为什么做if height=None: height=width ......我认为这只是因为它在我以前做过时才起作用。

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 

此代码可能有很多错误,不确定。

回答

3

一个选项是创建一个您想要的大小的空白图像,然后在中心绘制现有图像。

+1

如果输入图像较小,则使用Image.new创建一个空白图像,然后使用粘贴将图像置于空白图像的中心 – 2010-11-30 23:02:37