gpt4 book ai didi

c++ - 在 C++ 中导入 bmp 文件

转载 作者:行者123 更新时间:2023-11-28 03:19:34 24 4
gpt4 key购买 nike

我看了很多教程,但我就是无法使 Pixel 数据读取正常工作...

这是我目前得到的:

struct RGB
{
unsigned char blue,green,red,reserved;
};

BmpLoader* loadBmp(const char* filename)
{
BITMAPFILEHEADER header;
BITMAPINFOHEADER info;
FILE *file;
file=fopen(filename,"rb");

fread(&header,sizeof(header),1,file);
fread(&info,sizeof(info),1,file);
unsigned char *px;
int bitsize=info.biWidth*info.biHeight;
px=new unsigned char[bitsize*3];
fseek(file,header.bfOffBits,0);
for(int i=0;i<bitsize;i++)
{
RGB rgb;
fread(&rgb,sizeof(RGB),1,file);
px[i*3]=rgb.red;
px[i*3+1]=rgb.green;
px[i*3+2]=rgb.blue;
printf("%d %d %d\n",px[i*3],px[i*3+1],px[i*3+2]);

}

return new BmpLoader(px,info.biWidth,info.biHeight);

}

如您所见,我还尝试将它们打印为小数,应该给出字符的 ascii 码,输出如下所示:

204 204 76
204 204 255
204 204 136
204 204 76
204 204 255
204 204 136

我的问题是:我该如何解决这个问题?我究竟做错了什么?

最佳答案

你只读了一个字节到 rgb

fread(&rgb,1,1,file);

应该是

fread(&rgb,sizeof(RGB),1,file);

关于c++ - 在 C++ 中导入 bmp 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15856450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com