AS3 利用获取指定有效颜色的方法来获取最亮颜色的坐标数值

BitmapUtil类:

package
{
	import flash.display.BitmapData;
	import flash.geom.Point;
	import flash.geom.Rectangle;
	/**
	 * Bitmap工具类
	 * @author Jave.Lin
	 */
	public class BitmapUtil
	{
		public function BitmapUtil()
		{
		}
		/**
		 * 获取位图数据中颜色最亮的一点的坐标
		 * @param bmd 指定的位图数据
		 * @return 返回最亮的一点的坐标
		 */		
		public static function getMaxColorPixPos(bmd:BitmapData):Point
		{
			//有效矩形区域
			var colorBoundsRect:Rectangle = bmd.getColorBoundsRect(0x00FFFFFF, 0x00FF0000, true);
			//大小都不为1
			if(colorBoundsRect.width!=1 || colorBoundsRect.height!=1)
			{
				var maxColor:uint=0;
				var maxColorPixPosX:int=-1;
				var maxColorPixPosY:int=-1;
				for (var i:int = colorBoundsRect.x; i < colorBoundsRect.width; i++) 
				{
					for (var j:int = colorBoundsRect.y; j < colorBoundsRect.height; j++) 
					{
						var curColor:uint=bmd.getPixel(colorBoundsRect.x+i,colorBoundsRect.y+j);
						if(curColor>maxColor)
						{
							maxColor=curColor;
							maxColorPixPosX=i;
							maxColorPixPosY=j;
						}
					}
				}
				if(maxColorPixPosX==-1 || maxColorPixPosY==-1)
				{
					throw new Error("");
				}
				return new Point(maxColorPixPosX,maxColorPixPosY);
			}
			else
			{
				if(colorBoundsRect.width!=0 && colorBoundsRect.height!=0)
				{
					return new Point(colorBoundsRect.x+1,colorBoundsRect.y+1);
				}
				else
				{
					return null;
				}
			}
		}
	}
}
测试运行类:

package
{
	import flash.display.Bitmap;
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.ProgressEvent;
	import flash.geom.Point;
	import flash.net.URLLoader;
	import flash.net.URLLoaderDataFormat;
	import flash.net.URLRequest;
	import flash.net.URLStream;
	import flash.utils.ByteArray;
	
	public class BitmapUtilTest extends Sprite
	{
		public function BitmapUtilTest()
		{
			super();
			
			var urlLoaderMC:URLLoader=new URLLoader();
			urlLoaderMC.dataFormat=URLLoaderDataFormat.BINARY;
			urlLoaderMC.addEventListener(Event.COMPLETE,onurlLoaderMCComplete);
			urlLoaderMC.load(new URLRequest('res/link/13_0_0.png'));
		}
		
		private function onurlLoaderMCComplete(event:Event):void
		{
			var byteArray:ByteArray = event.target.data as ByteArray;
			
			var _loader:Loader = new Loader();
			_loader.loadBytes(byteArray);
			_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, _loaderHandler);
		}
		private function _loaderHandler(e:Event):void
		{
			var bmp:Bitmap=e.currentTarget.content as Bitmap;
			addChild(bmp);

			var pos:Point=BitmapUtil.getMaxColorPixPos(bmp.bitmapData);
			trace(pos);//输出:(x=257, y=226)
		}
	}
}
在PhotoShop中的图片:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值