位图加载器无法正确显示颜色

时间:2016-04-04 14:21:30

标签: c bitmap bitmapdata

我需要将位图图像转换为纹理。所以我正在编写用于解析位图的c代码。我能够解析位图rgb数据并显示它。但是颜色不正确。 它的32位图像。(ARGB)

int pixels = width * height * 4;
unsigned char* data = new unsigned char[pixels];
const int row = width * 4;
const int colomn = height;
unsigned char* datarow = new unsigned char[row];
unsigned char data1[pixels];
#if 1
fseek(f, 54,SEEK_SET);
fread(data, sizeof(unsigned char), pixels, f);

 fclose(file);
#endif
for(int i = 0; i < colomn; i++) {
    for(int j = 0; j < row; j++)
    {
            data1[j+i*row] = data[j+((colomn-i)*row)];
    }
}

1 个答案:

答案 0 :(得分:1)

你可能是那么忘记图像由扫描线组成并且扫描线是32位对齐的人。因此,您的简单行/列计算无效。

有关如何使用扫描线的信息,请参阅Dealing with padding in a BMP file in C