- 浏览: 97783 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
chensong215:
无法获取到ProgressEvent中的bytesTotal
自定义DownloadProgressBar -
qq2464785999:
非常感谢。
测试后,发现要用相对路径的话,好像要这么写
va ...
Flex写XML文件
通过FileReference打开本地图片崩溃的解决方法
最近在做图片上传工具,于是就遇到了FileReference打开本地图片崩溃的问题,搜了下解决方法,得到以下文章:
在Flash 9之前,含Flash 9,Flash无法实现本地图片预览的功能。Flash 10添加了FileReference.load方法,使得本地图片预览成了可能。使用流程:
FileReference.browse(),FileReference.load(),以及Loader.loadBytes(FileReference.data),具体使用略过。
这种使用流程存在一个问题,
遇到大图片时,本地预览会存在比较严重的性能问题,预览一张3.5M的图片,内存升到60M,预览15张3M左右大小的图片时,内存飙升到500M,可能会引起用户浏览器崩溃。
http://myadobe.ro/2008/11/24/filereference-the-end-of-upload-tyranny-guest-post-by-andrei-rosca/
给出了解决方案。
大致的思想是,在Loader加载到图片数据后,做如下处理:
//make the image 50 px in height
var scale:Number=50/loader.height;
//and actually resize it
loader.width*=scale;
loader.height*=scale;
loader.width=Math.round(loader.width);
loader.height=Math.round(loader.height);
//use a container so we don't need a matrix in BitmapData.draw
var container:Sprite=new Sprite();
container.addChild(loader);
//take the snapshot
var bmpData:BitmapData=new BitmapData(container.width,container.height);
bmpData.draw(container);
var bmp:Bitmap=new Bitmap(bmpData);
这样,相当于把图片按比例缩放之后,获取位图数据,转换为Bitmap对象,这样,只需要把Bitmap对象添加到Container中即可实现图片预览。
上述方法只在Flash Player自身运行时有效,对于浏览器中加载swf预览本地图片,还需要做一个操作:
(loader.contentLoaderInfo.content as Bitmap).bitmapData.dispose();
//从内存中删除原图的bitmapData引用
loader.unload();
但是这个方法并未完全解决问题,经过观察发现第一次打开浏览器并打开第一张大图后必然发生崩溃,那么猜想可能是由于flash player内存空间不够,而FileReference的load方法载入文件后得不到足够的内存空间而引发崩溃。
所以我的做法是在程序最开始加上如下代码:
(new BitmapData(2000, 2000)).dispose();
System.gc();
创建一个足够大的位图来开辟flash player的内存。
实践证明该方法管用!!
最近在做图片上传工具,于是就遇到了FileReference打开本地图片崩溃的问题,搜了下解决方法,得到以下文章:
在Flash 9之前,含Flash 9,Flash无法实现本地图片预览的功能。Flash 10添加了FileReference.load方法,使得本地图片预览成了可能。使用流程:
FileReference.browse(),FileReference.load(),以及Loader.loadBytes(FileReference.data),具体使用略过。
这种使用流程存在一个问题,
遇到大图片时,本地预览会存在比较严重的性能问题,预览一张3.5M的图片,内存升到60M,预览15张3M左右大小的图片时,内存飙升到500M,可能会引起用户浏览器崩溃。
http://myadobe.ro/2008/11/24/filereference-the-end-of-upload-tyranny-guest-post-by-andrei-rosca/
给出了解决方案。
大致的思想是,在Loader加载到图片数据后,做如下处理:
//make the image 50 px in height
var scale:Number=50/loader.height;
//and actually resize it
loader.width*=scale;
loader.height*=scale;
loader.width=Math.round(loader.width);
loader.height=Math.round(loader.height);
//use a container so we don't need a matrix in BitmapData.draw
var container:Sprite=new Sprite();
container.addChild(loader);
//take the snapshot
var bmpData:BitmapData=new BitmapData(container.width,container.height);
bmpData.draw(container);
var bmp:Bitmap=new Bitmap(bmpData);
这样,相当于把图片按比例缩放之后,获取位图数据,转换为Bitmap对象,这样,只需要把Bitmap对象添加到Container中即可实现图片预览。
上述方法只在Flash Player自身运行时有效,对于浏览器中加载swf预览本地图片,还需要做一个操作:
(loader.contentLoaderInfo.content as Bitmap).bitmapData.dispose();
//从内存中删除原图的bitmapData引用
loader.unload();
但是这个方法并未完全解决问题,经过观察发现第一次打开浏览器并打开第一张大图后必然发生崩溃,那么猜想可能是由于flash player内存空间不够,而FileReference的load方法载入文件后得不到足够的内存空间而引发崩溃。
所以我的做法是在程序最开始加上如下代码:
(new BitmapData(2000, 2000)).dispose();
System.gc();
创建一个足够大的位图来开辟flash player的内存。
实践证明该方法管用!!
发表评论
-
flex 自定义多个命名空间以及标签名
2013-01-22 15:21 1266flex 自定义多个命名空 ... -
FLEX中使用AS动态创建DataGrid
2013-01-09 16:24 883FLEX中使用AS动态创建DataGrid 2010年2月6日 ... -
flex与flash之间相互调用
2012-12-12 12:39 610http://www.cnblogs.com/kaixuan/ ... -
Flex与Flex创建的swf通信
2012-12-12 10:16 703加载子SWF的Flex程序代码 <?xml vers ... -
[AS3]加载视频(FLV)文件
2012-12-06 15:11 847[AS3]加载视频(FLV)文件 分类: FLEX/CS3-- ... -
使用FileReference的load()方法加载本地图片
2012-12-06 13:56 8951、要想使用FileReference的load()方法和da ... -
[AS3]Bitmap序列化(将BitmapData保存为原生Binary/ByteArray)
2012-12-06 13:48 748[AS3]Bitmap序列化(将BitmapData保存为原生 ... -
as3 画五角星算法
2012-12-05 16:49 2594as3 画五角星算法 阅读:10次 时间:2012-03- ... -
flex嵌入完整html
2012-11-29 11:18 797有时候我们需要在Flex应用中嵌入HTML代码,根据嵌入HTM ... -
flex4 textArea的htmlText属性
2012-11-29 11:13 3097它现在包含Text布局框架(Text Layout Frame ... -
Tooltip应用
2012-11-29 11:11 699创建ToolTip: var errorToolTip:To ... -
数据绑定显示问题
2012-10-27 12:11 629数据绑定实时变化。 XMLListCollection 可以变 ... -
待解决问题
2012-09-18 23:48 6891.仪表盘 2.渐变填充的使用 3.发光效果的完美运用 能在一 ... -
as3加载外部图片的两种方式
2012-09-09 11:46 985package net.burchin.loading { ... -
公式as3
2012-09-06 18:13 0as3 1人收藏此文章, 我要收藏 发表于1年前(2011-0 ... -
Flex中多线程的实现
2012-09-06 10:49 3465破阵子_如是我闻 如是我闻。一时佛在舍卫国,祗树给孤独园.. ... -
自定义column renderer
2012-08-09 15:07 894<?xml version="1.0" ... -
drowshadowFilter
2012-08-09 15:05 648DropShadowFilter 类,在Flash中为各种对象 ... -
123123
2012-08-08 17:16 0http://www.oschina.net/code/sni ... -
flex 画面快照截图与显示
2012-08-08 11:32 1036一、对指定画面进行快 ...
相关推荐
flex 打开本地图片并进行显示 var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, this.onLoadByted); loader.loadBytes(this.fileReference.data);
Flex与.NET互操作(五):使用FileReference+HttpHandler实现文件上传/下载 一文的源码的完整工程文件,包含FLEX客户端和 ASP.NET服务端源码! 在VS2010和FLash builder4 中运行!
通过flash.net.FileReference实现打开本地图片或音乐目录,有滤镜,可以设路径,仿照千千静听的波幅显示
fl包可用于纯as工程的ui应用,而filereference则是官方的demo
flex 利用FileReference上传firefox报2038错误,在网上收集的一些解决办法和资料
Flex与.NET互操作 使用FileReference+HttpHandler实现文件上传/下载
//AS3将文本文件保存到本地 仅5行代码 多么简单 import flash.net.FileReference; var fileRef:FileReference = new FileReference();
Flash 上传图片 控件 FileReference FileReferenceList 支持多选上传及FileReference、FileReferenceList结合使用
FileReferenceList 类或者FileReference 一个是多个上传一个是单个上传。用这2个类通过Java实现文件图片上传。
完成的文件上传功能。使用FileReference类实现。还有多文件上传
鉴于adobe并没有提供FileReference对浏览的文件的完整路径的接口。只能采用JS和fileinput控件来获取本地路径了。
Adobe flash3 AIR 更新 中文 Adobe flash3 AIR 更新 中文
在项目开发过程中,经常会遇到文件上传下载的...但在flex中由于安全沙箱的原因flex程序不能直接访问本地文件,但是flex SDK中提供了FileReference和FileReferenceList两个类,可以通过这两个类来实现文件的上传下载。
import flash.net.FileReference; var allTypes:Array = new Array(); var imageTypes:Object = new Object(); imageTypes.description = "Images (*.jpg, *.jpeg, *.gif, *.png)"; //指示可以上传的文件类型 ...
param.ItemDate = (this.parameters.ItemDate == undefined || this.parameters.ItemDate == "") ? 31457280 : this.parameters.ItemDate;//ItemDate单文件大小限制,-1表示不限制,默认值为30M ...
FLEXd多文件上传,上传前MD5验证允许那些文件可以上传
在其他应用程序中打开URL 第章:与其他FlashPlayer和AIR实例通信 关于LocalConnection类 在两个应用程序之间发送消息 连接到不同域中的内容和AIR应用程序 第章:与AIR中的本机进程通信 本机进程通信概述 启动和关闭本...
flex语言编写的,把xml内容存成xml文件保存到指定的位置!
如果你和我遇见一样的问题:用actionscript写一个需要操作本地文件(比如excel文件)之后批量导出jpg的工具,那么filereference不支持在没鼠标操作的情况下一次性多操作,你可以用zip的方式,单击鼠标,批量保存。
Flex Builder 3 下载安装与项目创建详细说明 Flex中利用FileReference类下载文件的例子| 中文Flex例子