Pyhon PIL 图片透明化

本文介绍了一种使用Python和PIL库处理PNG图片背景的方法,通过将特定颜色设为透明来改善图片与背景的融合效果,并探讨了如何进一步优化图片质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

231bcb2db688ed302170d5ccd7fc80c40a084563_m之前有些文章(01)里提到或者用到过透明图片,主要是我这博客的背景色比较特殊,有时候需要配图,可惜大多数找来的图不是这种背景色,对比显得太突兀影响美观。比如右边这张图片,由于是白色的背景,和黑色的背景配起来觉得不够合一。所以就想能不能制定某个颜色,比如这里的白色,让它变成透明的。

当然用Python来做,在网上搜了一下,发现一个解决方案,贴代码如下:

from PIL import Image

def transPNG(srcImageName,dstImageName):
    img = Image.open(srcImageName)
    img = img.convert("RGBA")
    datas = img.getdata()
    newData = list()
    for item in datas:
        if item[0] >220 and item[1] > 220 and item[2] > 220:
            newData.append(( 255, 255, 255, 0))
        else:
            newData.append(item)
    
    img.putdata(newData)
    img.save(dstImageName,"PNG")

if __name__ == '__main__':
    transPNG("apple.png","apple2.png")

 
 

代码意思就是将RGBA格式的PNG图片中比较白的像素点的alpha通道值改为0,这样得到的结果如下:

apple11

这样的结果……呃,看起来怪怪的,虽然背景大致透明了,但是还有一些比较令人烦躁的白色噪声点,PIL中有一个ImageFilter模块,可以通过里面的一些滤波操作来去掉这些白噪声,不过这个模块里面很多滤波器对图像进行操作的时候会更改alpha通道的值,所以背景又会变得不透明,这个比较麻烦,但有些模块就不更改,估计是设计模块的时候没有统一意见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值