问题陈述:
使用ImageMagick,我可以这样做:
keyboardHeightLayoutConstraint
给了我:
convert a.png a.txt
我也希望能够从文本文件回到png。我怎样才能做到这一点?我很乐意使用任何linux命令行工具,编程语言库等。
上下文:
我已经使用ImageMagick工具将原始图像的像素值解析为q(我使用的语言)。然后我对它们执行了转换,现在想要保存与新像素值对应的图像。使用q我可以轻松地以任何所需的文本格式保存rgb值。
答案 0 :(得分: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是相同的但是二进制,因此更紧凑。
这是一个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文件一样自包含,并且意味着你必须单独携带大小以便能够恢复数据,所以我会选择PGM / PPM版本为了3个细线标题。
请注意,您还可以使用重量轻得多的 NetPBM 工具(或libvips
或 GIMP ),在NetPBM和PNG格式之间进行上述所有转换,或其他)而不是 ImageMagick 。
例如,使用 NetPBM ,将PPM
转换为PNG
:
pnmtopng a.ppm > result.png