PIL修改带有透明像素的png图片颜色

知识补充

  • 颜色有两种 RGBARGB, 前者有 4 个值(r, g, b, a),后者有 3 个值(r,g,b),每个都是 0255RGBAa 就代表透明度。a= 0表示透明
  • getpixel((x, y)) 是获取对应像素点的颜色。
    putpixel((x, y), color) 是设置对应像素点的颜色。
  • png格式图像有4个通道,jpg图像本身只有3个通道

代码如下:

import PIL.Image as Image
import os

def change_png_color(path):
    # path是文件路径
    img = Image.open(path)
    img = img.convert('RGBA')
    L, H = img.size

    for i in range(L):
        for k in range(H):
            # img.getpixel((i, k))会返回一个四元组,该句获取像素点的第四个参数透明度
            # alpha取值范围是0-255,255表示透明,0表示不透明
            alpha = (img.getpixel((i, k)))[3]
            if alpha > 0:
                # 如果不透明就改变像素颜色,保持透明度不变
                img.putpixel((i, k), (255, 255, 255, alpha))
    img.save(path)
    # img.show()

# 修改一个文件夹内所有的图片
baseDir = 'C:\\'
for root, dirs, files in os.walk(baseDir):
    for f in files:
        change_png_color(os.path.join(root, f))

感谢并参考:
python opencv如何读取透明png图片以及如何编辑透明度
Python 技术篇-用PIL库修改图片透明度实例演示,改变png图片色道为RGBA、RGB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值