您当前的位置: 首页 > 

Jave.Lin

暂无认证

  • 5浏览

    0关注

    704博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

Jave.Lin 发布时间:2012-05-11 15:11:40 ,浏览量:5

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中的图片:

关注
打赏
1664331872
查看更多评论
立即登录/注册

微信扫码登录

0.0779s