as3 获取非透明区域

来源:互联网 发布:灰度图像旋转算法 编辑:程序博客网 时间:2024/06/07 06:39
 bitmapdata.getColorBoundsRect(0xFF000000,0x00000000,false)


主要方法我们用到getColorBoundsRect来获取非透明区域的大小getColorBoundsRect的参数可以方便 的让我们赛选出非透明区域 处理过程如下: bitmapdata.getColorBoundsRect(0xFF000000,0x00000000,false) 可能你会以为为什么我要定义这样两个参数来排除区域,

首先,我们应该知道 png图是ARGB制式,也就是说出类红绿蓝3通道外还带一alpha的透明通道 一个16进制的通道值大致是0xAARRGGBB 除0x外每两个数代表一组,前两个代表通明通道,ff是最大值,00是最小值,其他3通道一样。

getColorBoundsRect参数的说明如下

mask:uint — 一个十六进制值,指定要考虑的 ARGB 颜色的位。 通过使用 &(按位 AND)运算符,将颜色值与此十六进制值合并。 color:uint — 一个十六进制值,指定要匹配(如果 findColor 设置为 true)或不 匹配(如果 findColor 设置为 false)的 ARGB 颜色。 findColor:Boolean (default = true) — 如果该值设置为 true,则返回图像中颜色值的范围。 如果该值设置为 false,则返回图像中不存



上边的0xFF000000代 表的是透明度最大,0x00000000代表的是完全透明的 通过对 getColorBoundsRect参数的理解 我们知道 mask是一个颜色值合并参数,他会先对bitmapdata的所有像素进行合并,然后根据第二个匹配参数 也就是完全透明的的值进行匹配,最后根据findColor返回匹配的结果, 正果过程就是将bitmapdata的所有像素匹配完全透明值,返回非透明的实际矩形范围。 这样子我们就可以得到我们所需要的实际包图像范围了~

 

参考地址:

http://blog.sina.com.cn/s/blog_6859df3701014w6j.html