在设计中经常会需要将图片背景透明化,这使得图片能够被更好地拼接、叠加、放置在不同背景下,起到更美观的效果。在这篇文章中,我们将探讨一种快速而可靠的方法——使用Python中的maketransparent函数。
什么是maketransparent函数?
maketransparent函数是Pillow库(Python Imaging Library)中的一个图像处理函数,用于将图片背景中的某个颜色区域去除并透明化,保留其他图像元素不变。这个函数仅仅适用于png格式文件。
安装Pillow库
在代码中引用maketransparent函数前,需要先安装Pillow库。
使用以下命令在终端中安装Pillow库:
```python
pip install Pillow
```
导入Pillow库
在使用maketransparent函数前,需要导入Pillow库,代码如下:
```python
from PIL import Image
```
打开图片
使用以下代码将需要修改的图片打开:
```python
image = Image.open('image_name.webp')
```
随后,程序会在当前工作目录中找到图片文件名为image_name.webp的图片,并将其载入到image变量中。
设置透明色
maketransparent函数需要一个透明色作为参数。透明色需要是图像中某个具体像素的颜色值。一般来讲,最好使用最少出现在图片中的颜色。
用以下代码找到颜色值:
```python
img = Image.open('image_name.webp')
img.convert('RGBA')
pix = img.load()
print(pix[0,0])
```
这里将打印出图像最左上方像素点的颜色值。
例如,输出结果为 (0, 0, 0, 192) ,则(0, 0, 0)就是透明色。
应用maketransparent函数
一旦知道了透明色,就可以使用 maketransparent 函数将这个透明色的区域从图片中提取出来。使用以下代码行消除指定颜色中的所有像素:
```python
image = image.convert("RGBA")
datas = image.getdata()
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)
image.putdata(newData)
```
上述示例将黑色(0,0,0) 设为透明色,并将图像转换到 'RGBA' 模式。接下来对所有像素进行遍历。如果当前像素颜色与指定透明色相同,则将其替换为一个完全透明的像素(0, 0, 0, 0),否则将其原封不动地添加到新的像素数据序列中。
最后使用putdata函数将修改后的像素序列放回到原图片中。
保存图像
最后通过以下代码将修改后的图像保存到新文件中:
```python
image.save('image_output.webp')
```
完整代码
综合上述步骤,下面是一个完整的 Python 函数,可用于将 png 图片透明化的过程:
```python
from PIL import Image
def makeTransparent(image_path, color):
# 打开图片
image = Image.open(image_path)
# 设定图片透明度
image = image.convert("RGBA")
datas = image.getdata()
newData = []
for item in datas:
if item[0] == color[0] and item[1] == color[1] and item[2] == color[2]:
newData.append((255, 255, 255, 0))
else:
newData.append(item)
image.putdata(newData)
# 将修改后的图片保存为文件
image.save("transparent_" + image_path)
# 设定要修改图片的路径和透明色
makeTransparent("name.webp", (0, 0, 0))
```
总结
maketransparent函数是一种干净、快速、可重复的方法,可以将不需要的颜色删除并将其他元素保留。不需要任何图像编辑器的特殊技巧或知识,仅需要一些线程、分区和代码技能即可轻松操作。在设计、网页制作等领域中,maketransparent函数能为你提供更灵活而美观的操作方式。