为了账号安全,请及时绑定邮箱和手机立即绑定

如何在python中逐像素生成图像?

如何在python中逐像素生成图像?

慕的地8271018 2021-03-30 13:54:54
我正在为使用0作为定界符创建的图形格式编写图像生成器:这是一个例子。样本文件的摘录:202000200030FFFF000F0122202071960104203023302024.....分解这个2 0 Version is 2 200 0   Image Width is 200 pixels 200 0   Image Height is 200 pixels 3 0 There are 3 colours FFFF00 0    The first colour is FFFF00  F01222 0    The second colour is F01222 207196 0    The third colour is 207196 104703023302024 ... This is the image 然后将图像位204703023302044分解:2 0 Select Colour One42 0    Draw 42 pixels3 0 Select Colour Three233 0   Draw 233 pixels2 0 Select Colour Two24 0    Draw 24 pixels如何使用这种格式逐像素生成图像?我会使用PIL,但愿意接受建议。如果我要使用PIL,那我该怎么做?
查看完整描述

3 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

我个人会更改定界符,因为您不知道0是定界符还是值的一部分,还应该对颜色值使用固定数量的数字,可能将其指定为标头的一部分,之后它只是只需读取标头,然后将数据读取到数组中,然后调用PIL.Image.fromarray即可创建您的图片并从那里获取图片。


查看完整回答
反对 回复 2021-04-06
?
达令说

TA贡献1821条经验 获得超6个赞

我再三考虑,您的'0'分隔符就可以使用正则表达式,且前瞻性不高。本质上,您的“ 0”定界符是非零之前最右边的“ 0”。


为“ 0”定界符定义一个正则表达式(“ 0”后跟不是“ 0”或字符串结尾的内容)


>>> import re

>>> last_zero_delim = re.compile(r"0(?=[^0]|$)")

将此模式与re.split配合使用可分解输入字符串


>>> z = '202000200030FFFF000F01222020719601042030233020240'

>>> re.split(last_zero_delim,z)

['2', '200', '200', '3', 'FFFF00', 'F', '1222', '2', '7196', '1', '42', '3', '233', '2', '24', '']

现在,您可以浏览此列表以处理像素计数和调色板索引。


查看完整回答
反对 回复 2021-04-06
  • 3 回答
  • 0 关注
  • 332 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号