用c++导入bmp文件
Importing bmp file in C++
我看了很多教程,但我就是不能使像素数据读取工作…
这是我到目前为止得到的:
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 %dn",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);
相关文章:
- 从 bmp 文件数据创建 MFC CBitmap
- 将 bmp 文件加载到 TSpeedButton 中
- 在 BMP 文件中查找隐藏的消息
- C++,我正在尝试创建一个有效的.bmp输出文件
- 如何在C++的四叉树中存储 bmp 文件?
- 如何使用stb_image将像素颜色数据写入 BMP 图像文件?
- C++:读取.BMP文件时出现问题;文件结束时间早于预期
- 无法加载.bmp文件win32
- 读取BMP文件会归还意外数据
- 在C++中读取bmp文件的宽度和高度
- 在C 中读取并编写BMP文件
- 在BMP文件中保存屏幕截图的设备上下文
- 读取 BMP 文件C++(读取 BMP 标头时出现问题)
- JPEG编码位图(BMP)图像从文件使用libjpeg / C++
- 将图像文件(.BMP)复制到其他位置
- BMP 文件,访问数据
- BMP文件行填充问题
- C++:将整数的文本文件转换为BMP格式的位图图像文件
- 我的代码在尝试创建BMP文件时失败
- 加载位图文件(.bmp)