使用图像编辑软件编辑了一个宽是三个像素,高是两个像素的PNG图片。之所以是PNG格式,是因为它是不收版费的,并且支持透明像素。
六个像素分别是黑色、白色、透明色、红色、蓝色和绿色。之所以是这几个像素是因为有代表性,并且数据便于观察。
系统载入后得到的内存分布如下图,用相应颜色的框线说明了相应的数据。每个像素是32位,一个字节8位,所以一个像素四个字节,ARGB分别是其中的四个字节。
最低位是绿色,其次是蓝色、红色和透明度,每个字节十六进制是00-FF(即0-255)。
一行像素有3个,所以每行的字节数是12。由于图像数据是一维数组,所以每行字节数有用。
图像宽度3,高度2,跟图片的像素数量是对应的。有两行,所以像素总数是12×2=24字节。
第一个像素黑色,红绿蓝都没有颜色所以为0,不透明所以最高字节为FF。
第三个像素是透明色,所以透明度为0。

了解了图像数据的组成,便于载入文件后进行后期处理。比如把本来的粉色作为透明色,可以查找所有数值为0xFFFF00FF的DWORD值,替换为0x00FFFFFF。

被折叠的 条评论
为什么被折叠?



