python怎么变白-Python将png透明变为白色并保存为jpg图片

本文介绍了如何使用Python的Pillow库高效地将带有透明度的PNG图片转换为白色背景,并将其保存为JPEG格式。通过创建白色模板并应用alpha通道混合算法,避免了低效的像素遍历,显著提高了处理速度。
摘要由CSDN通过智能技术生成

我在实际工作中需要将一个存在alpha图层的Png图片经过正片叠底后,合成出一个新的渲染后图片,之后图片进行处理导出成jpg图片,这就需要剔除图片中的alpha通道,然而直接粗暴的剔除则会发生图片的正片叠底效果完全无用,变成了一大片图片糊在上面(因为透明内容丢失)

此时我参考了一篇这个文章,因为我核心的处理需求还是(透明底转换成白色底)

#利用Pillow进行处理-opencv同理

from PIL import Image

def alphabg2white_PIL(img):

img=img.convert('RGBA')

sp=img.size

width=sp[0]

height=sp[1]

print(sp)

for yh in range(height):

for xw in range(width):

dot=(xw,yh)

color_d=img.getpixel(dot)

if(color_d[3]==0):

color_d=(255,255,255,255)

img.putpixel(dot,color_d)

img.show()

return img

使用效果,的确能够把透明内容转换成白色内容,可是:【太】【卡】【了】!

运行效率极其低下

解剖一下代码的原理,无非就是遍历搜索(两层高度和长度的遍历)*(每一层内部的RGBA值得遍历),复杂度高到爆炸。

即时使用numpy进行优化(说明一下原理,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值