Image 如何将RGB值的文本文件转换为png文件?
问题陈述: 使用ImageMagick,我可以执行以下操作: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
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)边框,构成一个6x6PGM
:
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)边框,构成一个6x6PGM
:
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特定的文本格式。。。