pypng: 0.0.21
win10
python : 3.9.4
pip: 21.3.1
安装
pip install pypng
使用示例
import png # 这里不是pypng help(png) # 查看帮助
png.from_array() 从数组创建png图片并保存
(以下四个图片均为3×2px(像素))
- ‘L’ 灰度图
png.from_array([[0, 127, 255],[255, 127, 0]], ‘L’).save(“01.png”)
save()内为图片保存地址和图片名字
注:原图太小,上图为放大30倍后的图像(90×60px),下同。
可见,0代表全黑,255表示最亮。 - ‘LA’
png.from_array([[127,0, 127,50, 127,100],[255,50, 127,50, 0,50]], “LA”).save(“02.png”)
注:这里的不透明度范围是0-100,不是0-1 - ‘RGB’
png.from_array([[255,0,0, 0,255,0, 0,0,255],[255,255,0, 255,0,255, 0,255,255]], “RGB”).save(“03.png”)
- ‘RGBA’
png.from_array([[255,0,0,50, 0,255,0,50, 0,0,255,50],[255,255,0,0, 255,0,255,50, 0,255,255,100]], “RGBA”, ).save(“04.png”)
# 10*10px 随机png图片
import png
import random
row = []
png_arr = []
for i in range(100):
for j in range(300):
row.append(random.randint(0,255))
png_arr.append(row)
row = []
png.from_array(png_arr, "RGB").save("05.png")
png.Reader()
import png
rd = png.Reader("03.png")
print(rd.read())
#输出为一个元组,(width, height, ???, info_json)
(3,
2,
<generator object Reader._iter_bytes_to_values at 0x0000025CD966DF20>,
{‘greyscale’: False,
‘alpha’: True,
‘planes’: 4,
‘bitdepth’: 8,
‘interlace’: 0,
‘size’: (3, 2),
‘gamma’: 0.45455,
‘physical’: _Resolution(x=3780, y=3780, unit_is_meter=True)})
print(rd.read_flat())
#output:(width, height, values, info_json)
#这里可以得到到图片的数据!
(3,
2,
array(‘B’, [255, 0, 0, 255, 0, 255, 0, 255, 0, 0, 255, 255, 255, 255, 0, 255, 255, 0, 255, 255, 0, 255, 255, 255]),
{‘greyscale’: False,
‘alpha’: True,
‘planes’: 4,
‘bitdepth’: 8,
‘interlace’: 0,
‘size’: (3, 2),
‘gamma’: 0.45455,
‘physical’: _Resolution(x=3780, y=3780, unit_is_meter=True)})