首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Bmp灰度读入C

将Bmp灰度读入C
EN

Stack Overflow用户
提问于 2011-03-18 17:24:10
回答 1查看 2K关注 0票数 1

我寻找了如何在C下将Bmp文件读取为2或1维数组,有很多解决方案,但没有一个我需要的。我需要读取黑白bmp到(开始)2维数组,其中必须包含从0到255 (灰度)的值,然后将其转换为1维数组(但这不是问题)。Matlab自动完成这项工作,但我希望在C/C++下更加自主地工作。最后,bmp将被保存到Postgre数据库的int数组中。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-18 19:22:32

这是我为另一个问题制作的bmp加载器:

http://nishi.dreamhosters.com/u/so_bmp_v0.zip

这里的示例bmp是RGB,但它似乎也适用于灰度。

代码语言:javascript
复制
FILE* f = fopen( "winnt.bmp", "rb" ); if( f==0 ) return 1;
fread( buf, 1,sizeof(buf), f );
fclose(f);

BITMAPFILEHEADER& bfh = (BITMAPFILEHEADER&)buf[0];
BITMAPINFO& bi = (BITMAPINFO&)buf[sizeof(BITMAPFILEHEADER)];
BITMAPINFOHEADER& bih = bi.bmiHeader; 
char* bitmap = &buf[bfh.bfOffBits];
int SX=bih.biWidth, SY=bih.biHeight;

这里的位图是指向像素表的指针(为了正确访问,应该设置为无符号)。请注意,bmp中的像素行可以按相反的顺序存储。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5350072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档