修改图片背景为透明

发布时间 2023-07-27 16:50:29作者: 华小电

RGB 和 RGBA 的区别

RGB 配色方案:它是一种三通道格式,包含红色、绿色和蓝色的数据。rgb()函数的每个参数定义了 0 到 255 范围内的颜色强度。
RGBA 颜色格式是 RGB 方案的扩展,增加了指定颜色不透明度的 alpha 通道。alpha 值声明为从 0 到 1 的十进制数,其中 0 表示完全透明,1 表示完全不透明。

图片背景透明处理

知道了RGB和RGBA的区别,只要将背景的RGBA中alpha 设为0,即可实现背景透明。

  1. 转换图片为RGBA模式
  2. 设定图片背景中某一点为基准点,遍历所有像素点,如果像素点RGB与基准点RGB相同,令该像素点的A为0
    pic = Image.open(file)
    pic = pic.convert('RGBA')  # 转为RGBA模式
    
    pix = pic.load()  # 获取图片像素
    pix00 = pix[0,0] # 获取基准点(0,0)的RGBA

    for i in range(pic.size[0]):
        for j in range(pic.size[1):
            pos = pix[i, j]  # 获得某个像素点

            if pos == pix00:
            	pix[i, j] = (pos[0],pos[1],pos[2],0)

    # 保存图片
    pic.save(newfile)