首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用PIL将RGBA PNG转换为RGB?

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

Stack Overflow用户
提问于 2018-02-28 04:08:10
回答 2查看 0关注 0票数 0

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

源文件

代码语言:javascript
运行
复制
Image.open(object.logo.path).save('/tmp/output.jpg', 'JPEG')

要么

代码语言:javascript
运行
复制
Image.open(object.logo.path).convert('RGB').save('/tmp/output.png')

结果

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

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

EN

回答 2

Stack Overflow用户

发布于 2018-02-28 12:57:53

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

代码语言:javascript
运行
复制
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%

票数 0
EN

Stack Overflow用户

发布于 2018-02-28 13:41:26

通过使用Image.alpha_composite

代码语言:javascript
运行
复制
from PIL import Image

png = Image.open(img_path).convert('RGBA')
background = Image.new('RGBA', png.size, (255,255,255))

alpha_composite = Image.alpha_composite(background, png)
alpha_composite.save('foo.jpg', 'JPEG', quality=80)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档