Heim > Fragen und Antworten > Hauptteil
我想通过C语言打开指定位图的RGB值信息,类似Matlab中imread函数功能.由于无法将像素一一映射成控制台字符按原图显示,我通过重写该图看是否与原图一致验证读位图操作是否成功.结果写出来的位图无法打开.我对比了一下,占用存储空间也比原文件小一点,我猜测是自己对此类型图片的存储结构不了解导致的错误.以下是读写位图操作的代码,请各位指点:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
|
//经回答的朋友提醒我补充一下,以上代码是针对我测试用的8位位图的,不具有普适性.
伊谢尔伦2017-04-17 14:24:51
代码还没仔细看过,先留个坑再说。。。
先说说一眼看下去的结果,看到一句fwrite(&b, sizeof(BYTE), W * H, fp)
,题主的bmp是256色的么,如果是24位的应该是W*H*3
才对。另外,bmp格式的位图文件中存在align,故数据块的大小不应该通过W*H*(位深度/3)
,而是通过读取文件头中的信息得到