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

来源:互联网 发布:找不到网络上的打印机 编辑:程序博客网 时间:2024/04/29 15:47

<?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方法。可以看我的其他文章

效果图: