У меня заголовок заголовка и информации. первый пиксель читает в порядке со следующим кодом.C чтение пикселов bmp в массив 2d
// The BMPHEADER structure.
typedef struct {
byte sigB;
byte sigM;
int32_t fileSize;
int16_t resv1;
int16_t resv2;
int32_t pixelOffset;
} tBmpHeader;
// The BMPINFOHEADER structure.
typedef struct {
int32_t size;
int32_t width;
int32_t height;
int16_t colorPlanes;
int16_t bitsPerPixel;
byte zeros[24];
} tBmpInfoHeader;
typedef uint8_t byte;
typedef struct {
byte blue;
byte green;
byte red;
} tPixel;
// A BMP image consists of the BMPHEADER and BMPINFOHEADER structures, and the 2D pixel array.
typedef struct {
tBmpHeader header;
tBmpInfoHeader infoHeader;
tPixel **pixel;
} tBmp;
tPixel **BmpPixelAlloc(int pWidth, int pHeight)
{
tPixel **pixels = (tPixel **)malloc (pHeight * sizeof(tPixel *));
for (int row = 0; row < pHeight; ++row)
{
pixels[row] = (tPixel *)malloc(pWidth * sizeof(tPixel));
}
return pixels;
}
tError BmpRead(char *pFilename, tBmp *pBmp)
{
pBmp->pixel = BmpPixelAlloc(pBmp->infoHeader.width, pBmp->infoHeader.height);
if(FileRead(file, &pBmp->pixel, sizeof(tPixel), 1)!=0)
{
errorCode = ErrorFileRead;
}
}
репетитор я разговаривал с сказал, что я должен сделать следующий
, но это дает мне ошибку сегментации. если я поставил печать в цикле, она печатает несколько тысяч раз, прежде чем говорить о неисправности сегментации. Я пробовал использовать двойной цикл, но это даже не компилировалось. Я потратил несколько часов на google, но не могу понять это.
Зачем беспокоиться? Для этого уже есть простая в использовании и удобная для понимания [библиотека] (http://easybmp.sourceforge.net/). –
домашнее задание assignmnet – Covertpyro
Ну, и так, попробуйте пройти код в этой библиотеке. Вы можете узнать кое-что. –