保存bmp文件头的疑问
【疑问】将文件头一起写入得到图片不能正常显示,将其成员一个个写入就不会错,这是为什么?
【详情】bmp文件头结构体:
- C/C++ code
typedef struct tagBITMAPFILEHEADER{ WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits;} BITMAPFILEHEADER;这样做会有问题:
- C/C++ code
//一起写入就有问题fwrite(bmp->fileHeader,sizeof(BITMAPFILEHEADER),1,output);
这样做不会有问题:
- C/C++ code
/***一个个写入不会错*/void writeFileHeader(BITMAPFILEHEADER *fileHeader,FILE *output){ fwrite(&(fileHeader->bfType),sizeof(WORD),1,output); fwrite(&(fileHeader->bfSize),sizeof(DWORD),1,output); fwrite(&(fileHeader->bfReserved1),sizeof(WORD),1,output); fwrite(&(fileHeader->bfReserved2),sizeof(WORD),1,output); fwrite(&(fileHeader->bfOffBits),sizeof(DWORD),1,output);}[解决办法]
用winhex对比下写入的buf 就可以得知
[解决办法]
[/code=C/C++]
#pragma pack(push)
#pragma pack(1)
typedef struct tagBITMAPFILEHEADER
{
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER;
#pragma pack(pop)
[/code]