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

我正在为使用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 One

42 0    Draw 42 pixels

3 0 Select Colour Three

233 0   Draw 233 pixels

2 0 Select Colour Two

24 0    Draw 24 pixels

如何使用这种格式逐像素生成图像?我会使用PIL,但愿意接受建议。如果我要使用PIL,那我该怎么做?


慕的地8271018
浏览 333回答 3
3回答

慕勒3428872

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

达令说

我再三考虑,您的'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', '']现在,您可以浏览此列表以处理像素计数和调色板索引。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python