C语言 读取黑白BMP图
1个回答
展开全部
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:
现在想用C语言来读取一个黑白的BMP图. 我已经知道: 图的偏移量是54.以二进制打开BMP图,从54个字节开始便应该是图形码了. 如:"FF FF FF FF FF 00 00 FF FF FF" .
图片大小是320*240.我一个个读入后按一行320个像素,240行来画,画出了原图象的一个稍微重叠的图. 所以我怀疑是不是一个字节并不是代表一个像素? 如"FF"并不是代表一个白色像素? 具体如何? 希望能有高手指点下.我取出来的图形码该如何处理才能显示出正确的图来? 感激不尽!!!
解析:
1. 黑白BMP文件图的像素大多是从62字节(从0数起)开始。具体从哪一字节开始, 决定于文件中第10字节(从0数起)开始处4字节的整形数是多少. 因为文件头后面不是紧接着像素值.
2. 黑白BMP图的一个像素用一个bit表示。一般0表示背景(缺省为白色),1表示前景色(缺省为黑色)。即一个字节代表相邻的8个像素。
3. 320*240的黑白BMP图,每行320个像素用40个字节表示,240行,应占40*240=9600字节。加上前头62字节,文件大小应为9662字节。
4. BMP图像素的存储顺序是自底向上。所以文件最后40个字节表示的是第一行的像素值。
5. 行宽如不是8的倍数,也扩展到8的倍数。如行宽321, 则每行像素需用41个字节存储。你的行宽320,恰好是8的倍数,没有这个问题。
问题描述:
现在想用C语言来读取一个黑白的BMP图. 我已经知道: 图的偏移量是54.以二进制打开BMP图,从54个字节开始便应该是图形码了. 如:"FF FF FF FF FF 00 00 FF FF FF" .
图片大小是320*240.我一个个读入后按一行320个像素,240行来画,画出了原图象的一个稍微重叠的图. 所以我怀疑是不是一个字节并不是代表一个像素? 如"FF"并不是代表一个白色像素? 具体如何? 希望能有高手指点下.我取出来的图形码该如何处理才能显示出正确的图来? 感激不尽!!!
解析:
1. 黑白BMP文件图的像素大多是从62字节(从0数起)开始。具体从哪一字节开始, 决定于文件中第10字节(从0数起)开始处4字节的整形数是多少. 因为文件头后面不是紧接着像素值.
2. 黑白BMP图的一个像素用一个bit表示。一般0表示背景(缺省为白色),1表示前景色(缺省为黑色)。即一个字节代表相邻的8个像素。
3. 320*240的黑白BMP图,每行320个像素用40个字节表示,240行,应占40*240=9600字节。加上前头62字节,文件大小应为9662字节。
4. BMP图像素的存储顺序是自底向上。所以文件最后40个字节表示的是第一行的像素值。
5. 行宽如不是8的倍数,也扩展到8的倍数。如行宽321, 则每行像素需用41个字节存储。你的行宽320,恰好是8的倍数,没有这个问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询