需要掌握:
- python、PIL库
- numpy
下一篇:通过python、numpy理解png贴图的透明原理
介绍
png图片具有透明效果,这是诸多图片格式中一大特点
png图片有4个通道,RGB通道和alpha通道,alpha通道是透明信息
本文通过 PIL 和 numpy 理解png图片的RGBA通道
准备图片
代码
读取png图片
from PIL import Image
import numpy as np
png=Image.open("/Users/mym/Desktop/可删除/pig.png")
arr=np.array(png)
print(arr.shape)
执行结果:
(650, 650, 4)
因为 png是rgba4通道图,所以转成矩阵后最后一个维度是4
分别读取rgb通道 和 alpha 通道
png_rgb=arr[:,:,:3]
print(png_rgb.shape)
png_a=arr[:,:,3]
将rgb通道转成图片,并显示
Image.fromarray(png_rgb)
执行结果是普通的 rgb 三通道图片,这里没有上传
将 alpha 通道转成图片,并显示
那么将alpha通道转成图片,会是什么样?
我们将 alpha 通道转成图片,并显示
Image.fromarray(png_a)
执行结果如下:
透明的部分显示成 黑色,不透明的部分显示成 白色
打印 alpha 通道矩阵
print(png_a)
执行结果:
[[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
...
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]]
也就是说透明部分是0,不透明部分是255,中间还有过渡值

