2010-11-30 68 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