Image 如何将RGB值的文本文件转换为png文件?

Image 如何将RGB值的文本文件转换为png文件?,image,parsing,colors,imagemagick,png,Image,Parsing,Colors,Imagemagick,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

问题陈述:

使用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 I可以轻松地以所需的任何文本格式保存rgb值。

其工作方式与以下两种方式相同:

# 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将其转换回
PNG

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文件那样是独立的,这意味着您必须单独携带大小才能取回数据,因此为了3行小标题,我选择PGM/PPM版本


请注意,您还可以使用重量更轻的NetPBM工具(或
libvips
GIMP或其他工具)而不是ImageMagick在NetPBM和PNG格式之间进行上述所有转换

例如,使用NetPBM,将
PPM
转换为
PNG

pnmtopng a.ppm > result.png

这两种方式都是一样的:

# 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将其转换回
PNG

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文件那样是独立的,这意味着您必须单独携带大小才能取回数据,因此为了3行小标题,我选择PGM/PPM版本


请注意,您还可以使用重量更轻的NetPBM工具(或
libvips
GIMP或其他工具)而不是ImageMagick在NetPBM和PNG格式之间进行上述所有转换

例如,使用NetPBM,将
PPM
转换为
PNG

pnmtopng a.ppm > result.png

你能发布你到目前为止所做的事情的代码吗?只是为了澄清这一点,即使在事实发生后-我真的不可能有任何代码开始编写来解决我不知道要解决的问题…你能发布你到目前为止所做的事的代码吗?只是为了澄清这一点,即使在事实发生后-我真的不可能有任何代码编写开始解决一个我不知道如何解决的问题…不用说,但我建议您也生成并解析一个NetPBM文件作为程序的输入,而不是ImageMagick特定的文本格式…不用说,但我建议您也生成并解析一个NetPBM文件作为程序的输入,而不是ImageMagick特定的文本格式。。。