用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 值。
img = Image.open(‘image.png’)
rgba = img.convert(“RGBA”)
datas = rgba.getdata()
3.改变颜色
Data 将是一个包含数千个 RGBA 值元组的 Imaging Core 对象。要使背景透明,首先我们必须找到背景的 RGBA 值或我们想要透明的任何颜色。在此图像中,背景颜色为黑色。
黑色的RGB值为(0, 0, 0)。现在我们将遍历数据(RGBA 值),每当我们找到黑色像素时,我们将用透明的 RGBA 值替换它,即 ((255, 255, 255, 0),其他颜色将保持不变。我们将值存储在名为 newData 的新列表中。
newData = []
for item in datas:
if item[0] == 0 and item[1] == 0 and item[2] == 0:
newData.append((255, 255, 255, 0))
else:
newData.append(item)
4. 存储改变的图像
将 newData 存入 RGBA 值,将图片另存为 png 格式(透明图片不能存为 jpg 或 jpeg 格式)。
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] == 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")
输出:
在这里,我们使黄色透明。