我的程序结果是提供24位RGB数据。通过查看24位数据数组来验证我的结果是非常困难的。
如果有任何简单的方法将此数组转换为图像,我可以轻松验证我的结果。期待你的帮助。请。
示例:4x3分辨率图像,我将以下数据作为文本文件。
110000001100000011000000 110000001100000011111111 110000001100000011111111 110000001100000011111111 110000001100000011111111 110000001100000011111111 110000001100000011000000 110000001100000011111111 110000001100000011111111 110000001100000011111111 110000001100000011111111 110000001100000011111111
答案 0 :(得分:3)
我看过这个,它很丑陋但是很有效 - 我想。我使用awk
将1和0转换为直数,并将它们放在PPM
格式文件中,该文件是您可以从NetPBM套件documentation here获得的最简单的文件格式。
因此,对于RGB和255为最大像素强度的4x3图像,您的文件将需要如下所示:
P3 # header saying PPM format
4 3 # 4x3 pixels
255 # max value per pixel is 255
192 # Red value of top left pixel
192 # Green value of top left pixel
192 # Blue vaue of top left pixel
...
...
所以,我像这样转换你的文件
#!/bin/bash
tr ' ' '\n' < file | awk '
function bintxt2num(str){
result=0;
this=1;
for(i=8;i>0;i--){
if(substr(str,i,1)=="1")result += this
this*=2
}
print result
}
BEGIN{ printf "P3\n4 3\n255\n"}
{
R=substr($0,1,8); bintxt2num(R);
G=substr($0,9,8); bintxt2num(G);
B=substr($0,17,8); bintxt2num(B);
}' | convert ppm:- -scale 5000% result.png
最后,我使用ImageMagick
工具convert
将PPM
文件输出从awk
转换为名为{{1}的PNG
文件当我在它的时候,将它扩展到一个合适的大小。
看起来像这样:
如果我在result.png
的某个地方犯了一个愚蠢的错误,你的awk
文件看起来像这样:
PPM
如果您出于某种原因反对或无法安装ImageMagick,您始终可以使用原始NetPBM二进制文件并运行P3
4 3
255
192
192
192
192
192
255
192
192
255
192
192
255
192
192
255
192
192
255
192
192
192
192
192
255
192
192
255
192
192
255
192
192
255
192
192
255
或ppm2tiff
来执行从ppm2jpeg
到{{}的转换1}}或PPM
。请参阅here。