📜  用Python创建透明的 png 图像 – Pillow

📅  最后修改于: 2022-05-13 01:54:28.981000             🧑  作者: Mango

用Python创建透明的 png 图像 – Pillow

要使用 Python3 创建透明 png,使用 Pillow 库。 Pillow 库自带Python 。如果Python无法找到 Pillow 库,则打开命令提示符并运行以下命令:-

pip install Pillow

注意:如果您在使用 pip 安装 Pillow 时遇到任何问题,请先安装和设置 pip。为此检查这篇文章。

方法:

1. 从 Pillow 库中导入 Image 模块

from PIL import Image

2. 打开任何图像并获取 RAGBAG 值。



3.改变颜色

Data 将是一个包含数千个 RGBA 值元组的 Imaging Core 对象。要使背景透明,首先我们必须找到背景的 RGBA 值或我们想要透明的任何颜色。在此图像中,背景颜色为黑色。

黑色的RGB值为(0, 0, 0)。现在我们将遍历数据(RGBA 值),每当我们找到黑色像素时,我们将用透明的 RGBA 值替换它,即 ((255, 255, 255, 0),其他颜色将保持不变。我们将值存储在名为 newData 的新列表中。

4. 存储改变的图像

将 newData 存入 RGBA 值,将图片另存为 png 格式(透明图片不能存为 jpg 或 jpeg 格式)。

执行:

Python3
from PIL import Image
  
img = Image.open('image.png')
rgba = img.convert("RGBA")
datas = rgba.getdata()
  
newData = []
for item in datas:
    if item[0] == 0 and item[1] == 0 and item[2] == 0:  # finding black colour by its RGB value
        # storing a transparent value when we find a black colour
        newData.append((255, 255, 255, 0))
    else:
        newData.append(item)  # other colours remain unchanged
  
rgba.putdata(newData)
rgba.save("transparent_image.png", "PNG")


Python3
from PIL import Image
  
img = Image.open('image.png')
rgba = img.convert("RGBA")
datas = rgba.getdata()
  
newData = []
for item in datas:
    if item[0] == 255 and item[1] == 255 and item[2] == 0:  # finding yellow colour
        # replacing it with a transparent value
        newData.append((255, 255, 255, 0))
    else:
        newData.append(item)
  
rgba.putdata(newData)
rgba.save("transparent_image.png", "PNG")


输出:

现在拍摄相同的图像,如果我们想让黄色透明,我们需要使黄色像素透明。为此,我们必须通过其 RBG 值 (255, 255, 0) 找到黄色并将其替换为 (255, 255, 255, 0)。

新代码如下所示——

蟒蛇3

from PIL import Image
  
img = Image.open('image.png')
rgba = img.convert("RGBA")
datas = rgba.getdata()
  
newData = []
for item in datas:
    if item[0] == 255 and item[1] == 255 and item[2] == 0:  # finding yellow colour
        # replacing it with a transparent value
        newData.append((255, 255, 255, 0))
    else:
        newData.append(item)
  
rgba.putdata(newData)
rgba.save("transparent_image.png", "PNG")

输出:

在这里,我们使黄色透明。