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