知识补充
- 颜色有两种 RGBA 和 RGB, 前者有 4 个值(r, g, b, a),后者有 3 个值(r,g,b),每个都是 0 到 255,RGBA 的 a 就代表透明度。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