研究了下位图的格式,下面是从网上找到的一个说明文档(中文的,真好~~):
自己编了个生成位图文件的程序,只看这个文档还不能完全搞透位图,编程中就遇到了一些问题,现在总结一下,希望对大家有用:
1、位图中头的信息是按小字节序存储的,注意编译器如果是大字节序的需要字节顺序调整才可以。
2、位图中图象信息的第一个像素在图象中是左下角的像素,先最下一行从左往右,然后上面一行。
3、文档中有这样的说法:像素数据的长度(按字节计)要是4的倍数,这个4的倍数是怎么体现的呢?
首先,这个规定并不是可遵守不可遵守的,一旦不遵守,图象水平方向上像素数是4的倍数还好,不然肯定会出错。
这个4的倍数该怎么理解呢?我的像素怎么排?是不是每个像素占4个字节?
经过实际用画图板制作各种尺寸的图象得到下面的结论:
每个像素只占3个字节,水平方向上所有像素连续排列,
统计水平方向像素所占的字节数(像素数*3),如果得到的结果是4的倍数,就继续下一行数据,
如果不是4的倍数,在最后一个像素数据后面补0,使这一行的总字节数等于4的倍数,然后开始下一行数据
如:
3*5的图象:
水平方向有3个像素,像素占的字节数为9,不是4的倍数,在第三个像素数据后面补3个0,使这一行的总字节数为12,补完0,开始下一行数据。
5*3的图象:
水平方向有5个像素,像素占的字节数为15,不是4的倍数,在第五个像素后面补1个0,使此行的总字节数为16,继续下一行数据。
以下是写的程序(winTC编译)
文章评论(0条评论)
登录后参与讨论