python PIL - 背景显示不透明而不是透明

sha*_*nyu 3 python django image

我想从上传的图像(实际是头像)生成32x32大小的缩略图.

为了防止缩略图小于该大小,我想创建一个透明的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)
Run Code Online (Sandbox Code Playgroud)

Sov*_*iut 5

您正在生成JPG图像.JPEG不支持背景透明度.您需要生成PNG图像以支持透明度.


Pie*_*don 5

这是因为JPEG无法保存RGBA图像中包含的透明度信息.您可能希望将头像保存为PNG等能够保留这些信息的格式.