FLEX中显示类型为BMP的图片
FLEX的Image控件是不能直接显示BMP图片的,要进过一些简单而又复杂的处理
首先需要写一个类BMPDecode.as(附件中已上传)
使用方法如下(红色字体为主要代码)
<?xml version="1.0" encoding="utf-8"?><mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"width="400" height="300"borderStyle="none"><mx:Script><![CDATA[import mx.controls.Alert;import mx.effects.Zoom;import mx.core.UIComponent;import mx.core.BitmapAsset;[Bindable]public var imageSource:String="assets/uploadImage/default.jpg";//var request:URLRequest = new URLRequest("/westGameBackend/showImageController.htm?flag=animal&targetID=86");//var load:URLLoader=new URLLoader(request);//[Bindable]public var imageSource:String="/westGameBackend/showImageController.htm?flag=animal&targetID=86";private function changeBig():void{var zoom:Zoom=new Zoom();zoom.target=this;//X坐标放大倍数 zoom.zoomWidthTo = 2 ; //Y坐标放大倍数 zoom.zoomHeightTo =2 ; zoom.play();}public function into(url:String):void{url=encodeURI(url);var loader:URLLoader = new URLLoader(); //指定loader以二进制返回数据loader.dataFormat = URLLoaderDataFormat.BINARY;loader.addEventListener( Event.COMPLETE, onCompleteLoad );loader.load( new URLRequest( url ) );}public function onCompleteLoad( e:Event ):void { var loader:URLLoader = e.target as URLLoader; var decoder:BMPDecode = new BMPDecode(); //将二进制数据转换成BitmapData var bd:BitmapData = decoder.decode( loader.data ); //用来显示效果的Bitmap获取位图数据,图片平滑 var myBitmap:Bitmap = new Bitmap(bd,"auto",true); theImage.source=myBitmap;}private function imageIO():void{this.dispatchEvent(new Event("imageIO"));}]]></mx:Script><mx:Image width="100%" height="100%" id="theImage" source="{encodeURI(imageSource)}" ioError="imageIO();" horizontalAlign="center" verticalAlign="middle" toolTip="点击放大" click="changeBig();"/></mx:Canvas>?