最近做到公司的一个项目就是要在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对象添加事件

上面代码效果图:

java 实现照片粘贴到word文档上固定位置_应用