现在的位置: 首页 > 综合 > 正文

FLEX中利用bitmap和bitmapData改变为黑白画

2014年11月14日 ⁄ 综合 ⁄ 共 1342字 ⁄ 字号 评论关闭
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark"  creationComplete="application1_creationCompleteHandler(event)"
			   xmlns:mx="library://ns.adobe.com/flex/mx"  width="800" height="600">
	<fx:Script>
		<![CDATA[
			import mx.events.FlexEvent;
			
			import org.osmf.utils.URL;
			private var loader:Loader;
			private var loaderUrl:String = "Library/33.png";
			

			protected function application1_creationCompleteHandler(event:FlexEvent):void
			{
				loader = new Loader();
				loader.load(new URLRequest(loaderUrl));
				loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
			}
			private function onComplete(event:Event):void
			{
				var width:Number = loader.content.width;
				var height:Number = loader.content.height;
				Can.addChild(new Bitmap(Bitmap(loader.content).bitmapData));
				var bmpData:BitmapData = new BitmapData(width,height,false,0xffffff);
				bmpData.draw(loader);
				for(var i:int = 0 ;i <width; i++)
				{
					for(var j:int = 0; j<height; j++)
					{
						var color:uint = bmpData.getPixel(i,j);
						if(color>0x605555) //判断颜色进行处理
						{
							bmpData.setPixel(i,j,0xffffff);//设置该像素为白色
						}
						else
						{
							bmpData.setPixel(i,j,0x00000);//设置该像素为黑色
						}
					}
				}
				var bitmap:Bitmap = new Bitmap(bmpData);
				bitmap.x = width;
				Can.addChild(bitmap);
			}

		]]>
	</fx:Script>
	<mx:UIComponent id="Can" width="100%" height="100%">
		</mx:UIComponent>
</s:Application>

很早以前做的了,大体方法是先用loader加载进图片,然后draw画出bitmap在之后判断像素即可。其实可用bitmapdata中的threshold方法。可以看我的其他文章

效果图:

 

抱歉!评论已关闭.