2009-09-27 144 views
3

我想從上傳的圖像(實際上是頭像)生成32x32大小的縮略圖。python PIL - 背景顯示不透明而不透明

爲了防止縮略圖比這個尺寸小,我想創建一個透明的32x32背景並粘貼縮略圖。

下面的代碼嘗試這樣做。但是,頭像顯示在黑色且不透明的背景上;在整個過程中,我失去了透明度信息。我在哪裏做錯了?

def handle_image(img): 
    size = SMALL_AVATAR_IMAGE_SIZE 
    img.thumbnail(size, Image.ANTIALIAS) 
    img = img.convert('RGBA') 
    background = Image.new('RGBA', size, (255, 255, 255, 0)) 
    background.paste(img, (0, (size[1] - img.size[1])/2), img) 
    img = background 
    processed_image_small = ContentFile(img.tostring('jpeg', img.mode)) 
    targetpath = str(self.user.id) + '_S' + '.jpg' 
    self.img_small.save(targetpath, processed_image_small,save=False) 

回答

5

這是因爲JPEG無法保存包含在RGBA圖像中的透明度信息。您可能希望將頭像保存爲像PNG這樣的格式,可以保留這些信息。

5

您正在生成JPG圖像。 JPEG不支持背景透明度。您需要生成PNG圖像以支持幻燈片。