首先,我正在写一个litlle bmp图像分析仪。我有以下问题:图像存储在普通字节上,没有格式作为数组。
图像为24位,每像素需要3个字节。我已尝试使用我在此stackoverflow页面上找到的解决方案,但我无法将其用于结构。
我试过但它引用了无效区域和字节。如果你想在TinyPaste中看到它,那么这是我的完整代码(仅用于更好的突出显示):The code in TinyPaste
编辑1:此代码使用C ++,我想将其转换为纯C,以实现可移植性。这只是我将线性阵列转换为二维的想法。我试图让它适应结构的纯C,但我失败了。
此代码段取自a stackoverflow question that made me think about this
//The resulting array
unsigned int** array2d;
// Linear memory allocation
unsigned int* temp = new unsigned int[sizeX * sizeY];
// These are the important steps:
// Allocate the pointers inside the array,
// which will be used to index the linear memory
array2d = new unsigned int*[sizeY];
// Let the pointers inside the array point to the correct memory addresses
for (int i = 0; i < sizeY; ++i)
{
array2d[i] = (temp + i * sizeX);
}
// Fill the array with ascending numbers
for (int y = 0; y < sizeY; ++y)
{
for (int x = 0; x < sizeX; ++x)
{
array2d[y][x] = x + y * sizeX;
}
}
我将它改编为引用结构,但它失败了。我试过在这一行乘以三:
array2d[i] = (temp + i * sizeX /* multiply by 3*/);
但它仍然没有工作。我还完成了从char到struct bmp_pixel(char r,char g,char b)的相关铸件。
有人能告诉我如何使它适应结构的纯C吗?感谢。