2017-10-07 310 views
0

问题陈述:如何将RGB值的文本文件转换为png文件?

使用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命令行工具,编程语言库等

语境:

我已经使用了解析的原始图像的像素值代入Q(我使用的语言) ImageMagick工具。然后我对它们进行了转换,现在想保存对应于新像素值的图像。使用q我可以轻松地以任何所需的文本格式保存rgb值。

+0

你能张贴你到目前为止做了什么码? – Neb

+0

只是为了澄清这一点,即使事实 - 我真的不能有任何代码写入开始解决一个问题,我没有知识解决... – Rob

回答

3

它的工作原理相同的两种方式:

# Image to text 
convert image.png image.txt 

# Text to image 
convert image.txt andBack.png 

这可能是更好地写出了的NetPBM文件,但 - 如果灰度所以PGM(P5),和PPM(P6),如果颜色。格式非常简单,并描述为here

有几种变种称为P1到P6。 P1很少使用,只是单一和效率低下。 P2是灰度和ASCII(人类可读),P5是相同的,但二进制,因此更紧凑。 P3是彩色和ASCII(人类可读),P6是相同的,但二进制,因此更紧凑。

这里是一个4×4的白色(255)与1个像素宽的中灰(127)的边界制作6×6 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 

enter image description here

这里是一个彩色PPM其对应RGB像素的3×1行:

P3 
3 1 
255 
255 0 0 
0 255 0 
0 0 255 

enter image description here

然后,您可以将其转换回PNGImageMagick的

convert image.ppm image.png 
convert image.pgm image.png 

你也可以只写在订单RGB,RGB,RGB原始的二进制字节的文件,然后将其转换为PNG与ImageMagick的这样的:

convert -size 1024x768 RGB:data.bin image.png 

或灰度:

convert -size 1024x768 GRAY:data.bin image.png 

,虽然这将是略微变小,它不再是自包含像PGM/PPM文件,意味着你必须随身携带的大小分别是能得到您的数据备份,所以我会去对于PGM/PPM版本来说,这是为了3个微小的标题行。


注意,你也可以做的NetPBM和PNG格式之间的所有上述转换与轻得多,重量的NetPBM工具(或libvipsGIMP,或其他),而不是ImageMagick的

例如,的NetPBM,转换PPMPNG

pnmtopng a.ppm > result.png 
+1

不用说,但我会主张你生成和将NetPBM文件解析为您的程序的输入,而不是** ImageMagick **特定的文本格式... –