我需要将位图图像转换为纹理。所以我正在编写用于解析位图的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)];
}
}
答案 0 :(得分:1)
你可能是那么忘记图像由扫描线组成并且扫描线是32位对齐的人。因此,您的简单行/列计算无效。
有关如何使用扫描线的信息,请参阅Dealing with padding in a BMP file in C。