您的位置:首页 > 其它

flex加载本地图片怎么获取到图片的详细信息

2016-08-25 00:12 363 查看
最近做到公司的一个项目就是要在flex加载本地图片的时候判断图片的尺寸,目的就是为了对图片尺寸作出限制,原本是写Java的,现在flex不熟悉没办法还得硬着头皮上,就查找资料看flex是怎么获取信息的,熟悉flex的就别嫌弃我这么笨了啊!

先直接上代码:

<?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/mx" minWidth="955" minHeight="600" creationComplete="init(event)">
<s:layout>
<s:VerticalLayout gap="5"/>
</s:layout>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
private var fr:FileReference;
private var imageType : FileFilter;
private var loader :Loader = new Loader();
private var bitmap : Bitmap;

protected function imageBut_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
fr.browse([imageType]);
}

protected function init(event:FlexEvent):void
{
// TODO Auto-generated method stub
fr = new FileReference();
imageType =new FileFilter("Images (*.jpg, *.jpeg, *.png)", "*.jpg;*.jpeg;*.png");
fr.addEventListener(Event.SELECT,onSelect);
fr.addEventListener(Event.COMPLETE,completeHandler);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onCompleteHandler);
}
private function onSelect(event:Event):void{
fr.load();
}

private function onCompleteHandler(event:Event):void{
bitmap = Bitmap(loader.content);
ofId.text = "尺寸:  "+"width:"+bitmap.width+"  height:"+bitmap.height;

}
private function completeHandler(event:Event):void{
loader.loadBytes(fr.data);

imageid.source = fr.data;
nameId.text="名称"+fr.name;
sizeId.text ="大小"+ fr.size.toString();

}
]]>
</fx:Script>

<s:Button id="imageBut" click="imageBut_clickHandler(event)" label="加载图片"/>
<s:Image id="imageid" />
<s:Label id="nameId"/>
<s:Label id="sizeId"/>
<s:Label id="ofId"/>
</s:Application>


当组件加载完成进行初始化的时候,对数据文件添加监听,觉得为了自己方便,有必要将代码记录一遍。

每个FileReference对象都代码本地计算机上的一个数据文件,通过FileReference类的方法可以使应用程序本地加载或者保存数据文件,以及与远程服务器之间传输文件数据。其中包括browse()方法、upload()方法、download()方法、和save()方法。

1.browse()方法将打开一个对话框,提示用户选择一个或者多个要上传的文件,如果用户选择了一个或者多个,则创建了一个FileReference对象数组;

2.upload()方法可以将文件数据上传到远程服务器;

download()方法可以从服务器下载数据到本地,打开一个对话框,让用户选择要保存文件的位置,然后从服务器下载,将数据存储在新文件中;

3. load()使用browse()方法开始之前所选的文件中加载数据。知道browse()操作完成,即用户选择了文件,才能调用load()方法;

4.save()方法打开一个对话框,提示用户在本地文件系统上选择一个位置,然后将此文件数据保存到该指定位置;

其中代码中就用了browse()方法打开窗口让用户选择文件,load()方法就是让用户对本地文件进行访问。

FileReference类的属性包括了文件大小、类型、名称、创建者、创建日期和修改日期等信息,一般通过下面两种方式创建FileReference实例,

常见的就是NEW对象:

private var fr:FileReference = new FileReference();


在使用loader加载数据时候,添加监听事件时候,一定是要给contentLoaderInfo属性添加,而不是给loader对象添加事件

上面代码效果图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: