代码如下:
<?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"
xmlns:mx="library://ns.adobe.com/flex/halo"
minWidth="1024" minHeight="768" creationComplete="init();"
xmlns:mx1="library://ns.adobe.com/flex/mx">
<s:layout>
<s:HorizontalLayout/>
</s:layout>
<fx:Script>
<![CDATA[
import mx.core.UIComponent;
import flash.net.FileFilter;
import flash.net.FileReference;
private var imageFilter:FileFilter=
new FileFilter("图片文件(*.jpeg;*.jpg;*.png;*.gif)","*.jpeg;*.jpg;*.png;*.gif");
private var imageReference:FileReference=new FileReference();
private var imageLoader:Loader=new Loader();
private function init():void{
var uicomp:UIComponent=new UIComponent();
uicomp.addChild(imageLoader);
canvas.addElement(uicomp);
}
private function loadImage():void{
imageReference.browse([imageFilter]);
imageReference.addEventListener(Event.SELECT,fileSelected);
}
private function fileSelected(event:Event):void{
imageReference.addEventListener(Event.COMPLETE,fileComplete);
imageReference.addEventListener(ProgressEvent.PROGRESS,fileProgress);
imageReference.load();
}
private function fileComplete(event:Event):void{
imageLoader.loadBytes(imageReference.data);
}
private function fileProgress(event:ProgressEvent):void{
}
]]>
</fx:Script>
<s:Button label="LoadImage" click="loadImage();"/>
<mx1:Canvas id="canvas" width="553" height="437" borderColor="0x000000" borderStyle="solid">
</mx1:Canvas>
</s:Application>
遇到的后续问题:
加载本地图片后舞台的大小变化。 即获得本地图片的width 和 height 等原始属性。
解决办法:
通过 Loader 类 的 contentLoaderInfo 属性 : var target:LoaderInfo = evt.currentTarget as LoaderInfo;
代码如下:
private function fileComplete(event:Event):void
{
loder.loadBytes(file.data);
loder.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHander);
}
private function completeHander(evt:Event):void
{
var target:LoaderInfo = evt.currentTarget as LoaderInfo;
img.width = target.width;
img.height = target.height; // 即图片宽高
}