从二进制数据

时间:2017-10-13 09:42:19

标签: c# image binary rgb

我有一个.IMG文件。
文件的规范/描述是(我翻译):
- IMG二进制格式由N×N个像素组成,其中单个像素的大小是数字数据类型的2个音节:短(预定义)。

我现在正在做的是将数据读入字节数组,然后尝试使用RGB值创建BitImage。

字节数组如下所示: [0] 0字节
[1] 248字节
[2] 0字节
[3] 248字节
[4] 0字节
...... [414317] 253
[414318] 136
[414319] 254
[414320] 102
[414321] 252
[414322] 135
...
[524287] 248字节

 public static Bitmap GetPictureFromData(int w, int h, byte[] data)
 {
     Bitmap bmp = new Bitmap(w, h);

     int i = 0;
     for (int y = 0; y < h; y++)
     {
         for (int x = 0; x < w; x++)
         {
             int a = 255;
             int r = data[i];
             int g = data[i+1];
             int b = data[i+2];

             bmp.SetPixel(x, y, Color.FromArgb(a,r, g, b));
             i += 3;
         }

     }
     return bmp;
}
private void button1_Click(object sender, EventArgs e)
{
     byte[] file = File.ReadAllBytes("C:\\Users\\user\\Desktop\\glava\\0219.img");

     Image img = GetPictureFromData(260, 260, file);
     pictureBox1.Image = img;
}

我不知道图像的宽度和高度,这就是我放260的原因。我使用了260,因为如果我使用更大的数字,我就会超出界限。 我做错了什么,因为图片并不代表任何东西。我还使用jpg格式来测试代码,但也没有用。

0 个答案:

没有答案