繁体   English   中英

在C ++中导入bmp文件

[英]Importing bmp file in C++

我看了很多教程,但我不能让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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM