我正在为使用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即可创建您的图片并从那里获取图片。

达令说
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', '']
现在,您可以浏览此列表以处理像素计数和调色板索引。
添加回答
举报
0/150
提交
取消