python pypng png.from_array() and png.Reader()

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(像素))

  1. ‘L’ 灰度图
    png.from_array([[0, 127, 255],[255, 127, 0]], ‘L’).save(“01.png”)
    save()内为图片保存地址和图片名字
    请添加图片描述
    注:原图太小,上图为放大30倍后的图像(90×60px),下同。
    可见,0代表全黑,255表示最亮。
  2. ‘LA’
    png.from_array([[127,0, 127,50, 127,100],[255,50, 127,50, 0,50]], “LA”).save(“02.png”)
    02.png
    注:这里的不透明度范围是0-100,不是0-1
  3. ‘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”)
    03.png
  4. ‘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”)
    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")

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)})

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今夕何夕2112

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值