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

论坛 期权论坛 脚本     
匿名网站用户   2020-12-20 03:31   11   0

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

效果图:

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP