登录

如何使用PIL将RGBA PNG转换为RGB?

内容来源于 Stack Overflow,遵循 CC BY-SA 4.0 许可协议进行翻译与使用。IT领域专用引擎提供翻译支持

腾讯云小微IT领域专用引擎提供翻译支持

Stack Overflow用户 提问于2018-02-28

我使用PIL将用Django上传的透明PNG图像转换为JPG文件。

源文件

Image.open(object.logo.path).save('/tmp/output.jpg', 'JPEG')

要么

Image.open(object.logo.path).convert('RGB').save('/tmp/output.png')

结果

两种方式,产生的图像如下所示:

有没有办法来解决这个问题?

浏览 378 关注 0 得票数 0
  • 得票数为Stack Overflow原文数据
回答于2018-02-28
得票数 0

这是一个更简单的版本 - 不确定它的性能如何。基于我在创建 RGBA -> JPG + BG 对sorl缩略图的支持时发现的一些django片段。

from PIL import Image
png = Image.open(object.logo.path)
png.load() # required for png.split()
background = Image.new("RGB", png.size, (255, 255, 255))
background.paste(png, mask=png.split()[3]) # 3 is the alpha channel
background.save('foo.jpg', 'JPEG', quality=80)

结果@ 80%

结果@ 50%

回答于2018-02-28
得票数 0

通过使用 Image.alpha_composite

from PIL import Image