0 c++
我试图创建一个.bmp文件,文件无法识别.我究竟做错了什么?
#define ImageWidgh 1920
#define ImageHeight 1080
#define fileSize ImageWidgh*ImageHeight*3+54
struct BMPH
{
short Signature;
long int FileSize,reserved,DataOffest;
}BMPH;
struct BMPIH
{
long int Size,Width,Height;
short Planes,BitCount;
long int Compression,ImageSize,XpixelsPerM,YpixelsPerM,ColorsUsed,ColorImportant;
}BMPIH;
struct BMPCT
{
unsigned char Red,Green,Blue;
}BMPCT;
BMPH *getBMPH()
{
BMPH New;
New.Signature='BM';
New.FileSize=fileSize;
New.reserved=0;
New.DataOffest=54;
return &New;
}
BMPIH *getBMPIH()
{
BMPIH New;
New.Size=40;
New.Width=ImageWidgh;
New.Height=ImageHeight;
New.Planes=1;
New.BitCount=24;
New.Compression=0;
New.ImageSize=0;
New.XpixelsPerM=0;
New.YpixelsPerM=0;
New.ColorsUsed=0;
New.ColorImportant=0;
return &New;
}
BMPCT Pixels [ImageWidgh][ImageHeight];
void writeFile()
{
FILE *file;
file=fopen("D://test.bmp","wb");
fwrite(getBMPH() ,sizeof(BMPH) ,1,file);
fwrite(getBMPIH(),sizeof(BMPIH),1,file);
fwrite(&Pixels ,ImageWidgh*ImageHeight*3,1,file);
fclose(file);
}
Run Code Online (Sandbox Code Playgroud)
一个经典的错误:你正在返回一个指向局部变量的指针,一旦你离开函数就会被破坏.指针最终指向胡言乱语或更糟.
让函数返回完整的结构而不是指针,或者将指针传递给函数而不是在其中创建变量.
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |