问题陈述:
使用ImageMagick,我可以:
convert a.png a.txt
这给了我:
# ImageMagick pixel enumeration: 297,239,255,srgba
0,0: (255,255,255,1) #FFFFFF white
1,0: (255,255,255,1) #FFFFFF white
2,0: (255,255,255,1) #FFFFFF white
3,0: (255,255,255,1) #FFFFFF white
...
我还希望能够从文本文件返回到png。我该怎么做?我很乐意使用任何linux命令行工具、编程语言库等。
上下文:
我使用ImageMagick工具将原始图像的像素值解析为Q(我正在使用的语言)。然后,我对它们进行了转换,现在希望保存与新像素值相对应的图像。使用q可以轻松地以所需的任何文本格式保存rgb值。
发布于 2017-10-07 09:53:38
它的工作原理是相同的:
# Image to text
convert image.png image.txt
# Text to image
convert image.txt andBack.png
也许最好写一个NetPBM文件-所以PGM
(P5)是灰度的,PPM
(P6)是彩色的。该格式非常简单,并描述了这里。
有几种被称为P1通过P6的变体。P1很少被使用,只是单一的和低效的。P2是灰度的,ASCII (人类可读的)和P5是相同的,但是二进制,因此更紧凑。P3是彩色的,ASCII (人类可读的)和P6是一样的,但是是二进制的,因此更紧凑。
这里是一个4x4白色(255)矩形,宽1像素,中间灰色(127)边框,形成6x6 PGM
。
P2
6 6
255
127 127 127 127 127 127
127 255 255 255 255 127
127 255 255 255 255 127
127 255 255 255 255 127
127 255 255 255 255 127
127 127 127 127 127 127
下面是一个颜色PPM
,它对应3x1行RGB像素:
P3
3 1
255
255 0 0
0 255 0
0 0 255
然后,您可以使用ImageMagick将其转换回ImageMagick
convert image.ppm image.png
convert image.pgm image.png
您还可以将原始二进制字节按RGB、RGB、RGB顺序写入文件,然后使用ImageMagick将其转换为PNG,如下所示:
convert -size 1024x768 RGB:data.bin image.png
或用于灰度:
convert -size 1024x768 GRAY:data.bin image.png
虽然这会稍微小一些,但它不再像PGM/PPM文件那样自我包含,意味着您必须单独携带大小才能将数据拿回来,所以我会选择PGM/PPM版本,因为有3行标题。
请注意,您还可以使用重量更轻的ImageMagick. NetPBM 工具(或libvips
或GIMP或其他工具)在NetPBM和PNG格式之间进行上述所有转换,而不是使用。
例如,使用NetPBM将PPM
转换为PNG
pnmtopng a.ppm > result.png
https://stackoverflow.com/questions/46618837
复制相似问题