主要原理也是使用2进制载入,再按24位BMP文件格试进行读取并转换成BitmapData再显示出来,只要读入BMP图片转换成二进制,再转成BitmapData,最后把获取位图数据的Bitmap传给Image源,让Image控件显示出来。
下面是我的一个Flex工程:
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.core.UIComponent;
import mx.core.BitmapAsset;
//导入BMPDecoder
import imageDecoder.BMPDecoder;
private function showimage():void {
loadBMPFile("../test.bmp");
}
private function loadBMPFile( url:String ):void {
var loader:URLLoader = new URLLoader();
//指定loader以二进制返回数据
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.addEventListener( Event.COMPLETE, onCompleteLoad );
loader.load( new URLRequest( url ) );
}
private function onCompleteLoad( e:Event ):void {
var loader:URLLoader = e.target as URLLoader;
var decoder:BMPDecoder = new BMPDecoder();
//将二进制数据转换成BitmapData
var bd:BitmapData = decoder.decode( loader.data );
//用来显示效果的Bitmap获取位图数据,图片平滑
var myBitmap:Bitmap = new Bitmap(bd,"auto",true);
myImage.source=myBitmap;
}
]]>
</mx:Script>
<mx:Button
id="showImage"
label="showimage"
click="showimage();"/>
<mx:Image id="myImage" />
</mx:Application>
Right! is "Fuck GIS",but don't think too much; It means reach a high during playing GIS. Come on!