我有一个.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格式来测试代码,但也没有用。