求助:bitmap结构中的一个数据项的疑问

LeonTown 2010-01-26 10:19:25
我有一个bitmap的图片,宽和高分别是85和20个“像素”;
并且是24位的真彩色图片,就是一个像素占3个字节。

在读取这个图片的BITMAPINFOHEADER后,
该结构的如下数据项的值分别为:

biWidth:85 //宽85个像素
biHeight:20 //高20个像素
上述两个数据项没有问题;

但是,
biSizeImage:5120 //而85*20*3=5100
这个biSizeImage数据项比预期的值大了20!

请教,这多出来的20是怎么回事啊?
...全文
76 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ga6840 2010-01-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 leontown 的回复:]
那么,为对齐而增加的字节是添加在每行的最后吧?
读取的时候,可以按行为单位,或直接以4字节为单位读取了。
[/Quote]
对的,在每行最后。
至于24bit 位图 就要以3字节为单位读取。。。
按行读当然要快得多。


LeonTown 2010-01-28
  • 打赏
  • 举报
回复
谢谢楼上的指点!

我想这是为了加快读取速度,
以4字节对齐的缘故吧。。。

由于每个像素占3个字节,只要每行的像素数是4的整数倍,就不会有事;
而对width%4的像素数,相当于对每个像素再增加一个字节,以使其4字节对齐。

那么,为对齐而增加的字节是添加在每行的最后吧?
读取的时候,可以按行为单位,或直接以4字节为单位读取了。
fastbit 2010-01-27
  • 打赏
  • 举报
回复
图像为了便于处理,都是有一个pitch 参数,但是不一定正好等于width,多出来的就是差值
ga6840 2010-01-26
  • 打赏
  • 举报
回复
你的Width % 4 是 1
每行多1字节
1*20 就是总共多出来的
ga6840 2010-01-26
  • 打赏
  • 举报
回复
biSizeImage = bmWidthBytes * bmp.bmHeight;
其中bmWidthBytes 是每行的字节长度 不仅仅是85*3 bitmap每行还会多 Width % 4 个字节
目的是让内存读得快

4,499

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧