如何将24位RGB阵列转换为图像?

时间:2015-02-02 08:27:00

标签: image image-processing rgb

我的程序结果是提供24位RGB数据。通过查看24位数据数组来验证我的结果是非常困难的。

如果有任何简单的方法将此数组转换为图像,我可以轻松验证我的结果。期待你的帮助。请。

示例:4x3分辨率图像,我将以下数据作为文本文件。

  

110000001100000011000000 110000001100000011111111    110000001100000011111111 110000001100000011111111    110000001100000011111111 110000001100000011111111    110000001100000011000000 110000001100000011111111    110000001100000011111111 110000001100000011111111    110000001100000011111111 110000001100000011111111

1 个答案:

答案 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工具convertPPM文件输出从awk转换为名为{{1}的PNG文件当我在它的时候,将它扩展到一个合适的大小。

看起来像这样:

enter image description here

如果我在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