- 浏览: 100478 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 1336flex 自定义多个命名空 ... -
FLEX中使用AS动态创建DataGrid
2013-01-09 16:24 919FLEX中使用AS动态创建DataGrid 2010年2月6日 ... -
flex与flash之间相互调用
2012-12-12 12:39 628http://www.cnblogs.com/kaixuan/ ... -
Flex与Flex创建的swf通信
2012-12-12 10:16 733加载子SWF的Flex程序代码 <?xml vers ... -
[AS3]加载视频(FLV)文件
2012-12-06 15:11 863[AS3]加载视频(FLV)文件 分类: FLEX/CS3-- ... -
使用FileReference的load()方法加载本地图片
2012-12-06 13:56 9371、要想使用FileReference的load()方法和da ... -
[AS3]Bitmap序列化(将BitmapData保存为原生Binary/ByteArray)
2012-12-06 13:48 760[AS3]Bitmap序列化(将BitmapData保存为原生 ... -
as3 画五角星算法
2012-12-05 16:49 2630as3 画五角星算法 阅读:10次 时间:2012-03- ... -
flex嵌入完整html
2012-11-29 11:18 815有时候我们需要在Flex应用中嵌入HTML代码,根据嵌入HTM ... -
flex4 textArea的htmlText属性
2012-11-29 11:13 3117它现在包含Text布局框架(Text Layout Frame ... -
Tooltip应用
2012-11-29 11:11 732创建ToolTip: var errorToolTip:To ... -
数据绑定显示问题
2012-10-27 12:11 681数据绑定实时变化。 XMLListCollection 可以变 ... -
待解决问题
2012-09-18 23:48 7231.仪表盘 2.渐变填充的使用 3.发光效果的完美运用 能在一 ... -
as3加载外部图片的两种方式
2012-09-09 11:46 1046package net.burchin.loading { ... -
公式as3
2012-09-06 18:13 0as3 1人收藏此文章, 我要收藏 发表于1年前(2011-0 ... -
Flex中多线程的实现
2012-09-06 10:49 3521破阵子_如是我闻 如是我闻。一时佛在舍卫国,祗树给孤独园.. ... -
自定义column renderer
2012-08-09 15:07 964<?xml version="1.0" ... -
drowshadowFilter
2012-08-09 15:05 678DropShadowFilter 类,在Flash中为各种对象 ... -
123123
2012-08-08 17:16 0http://www.oschina.net/code/sni ... -
flex 画面快照截图与显示
2012-08-08 11:32 1054一、对指定画面进行快 ...
相关推荐
flex 打开本地图片并进行显示 var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, this.onLoadByted); loader.loadBytes(this.fileReference.data);
总的来说,Flash Air通过提供对本地文件系统和操作系统功能的访问,使得开发者能够创建具有强大功能的跨平台应用,包括打开和处理本地文件。了解并熟练运用这些技术对于开发高效、用户友好的应用程序至关重要。
另一方面,"crop_rectangle_app.zip"可能是一个具体的应用,比如图像裁剪工具,它可能用到了filereference类来处理用户选择的图片文件,允许用户裁剪后保存到本地。 在实际开发中,熟练掌握fl包和filereference类...
4. **保存图片到本地**:如果需要将图片保存到用户的本地系统,可以使用`FileReference`的`save()`方法。首先,我们需要将图片数据转换成适合保存的格式,如JPEG或PNG,然后调用`save()`,并提供一个文件名和保存...
1. 文件访问:AS3允许通过FileReference类读取本地文件,用户选择图片后,可以通过FileReference的browse()方法打开文件选择对话框,然后load()方法加载选中的图片。 2. 图像处理:导入的"jingLib"库可能提供了图像...
通过创建`BitmapData`对象,使用`FileReference`进行保存操作,并处理相关事件,可以为用户提供一个流畅的图片保存体验。记得在开发过程中始终关注用户权限和隐私保护,以确保软件的合法性和可靠性。
这通常通过Flash的FileReference类实现,用户可以通过FileReference.browse()方法打开文件选择对话框,选择多张图片,并通过FileReference.load()方法读取选定的文件。 再者,“多图片上传”则意味着系统能同时处理...
这意味着在某些服务器配置下(如需要通过会话ID进行验证的场景),当使用Flash Player通过`FileReference`上传文件时,可能会因为请求中未包含有效的会话标识而导致验证失败。 > Adobe文档说明:“`FileReference...
Flex与.NET互操作(五):使用FileReference+HttpHandler实现文件上传/下载 一文的源码的完整工程文件,包含FLEX客户端和 ASP.NET服务端源码! 在VS2010和FLash builder4 中运行!
通过flash.net.FileReference实现打开本地图片或音乐目录,有滤镜,可以设路径,仿照千千静听的波幅显示
1. **FileReference类**:在Flash中,图片上传主要通过`FileReference`类实现。这个类允许用户选择本地文件,然后将文件上传到服务器。首先,你需要创建一个`FileReference`对象,然后监听`select`事件,当用户选择...
这个"Flex4.6+java+servlet上传图片例子+图片上传预览"的项目,结合了前端的Flex技术和后端的Java Servlet,为我们提供了一个完整的解决方案。下面将详细解释这个项目的各个组成部分及其工作原理。 首先,让我们来...
`FileReference`类提供了访问本地文件系统的方法。通过这个实例,我们可以执行保存或打开文件等操作。 3. **添加事件监听器** ```as3 save_btn.addEventListener(MouseEvent.MOUSE_DOWN, saveTxt); ``` 为了...
2. **本地文件访问**: 在AS2.0中,通过使用FileReference类,可以实现对本地文件系统的读取权限,使得应用程序能够安全地加载用户选择的图片。这涉及到用户权限的请求和文件路径的处理。 3. **图片加载**: 使用AS...
4. 对于每个图片文件,创建一个FileReference对象,并调用它的load()方法加载图片数据。 5. 数据加载完成后,可以通过监听FileReference的complete事件来处理加载的数据,例如创建一个Bitmap对象并将其添加到显示...
总结来说,Flex上传本地图片并提前浏览的实现方法涉及到对ActionScript 3.0编程语言的理解,特别是FileReference类的使用和异步事件处理机制。通过为FileReference对象添加适当的事件监听器并使用FileFilter来限制...
3. **图片预览**:对每个FileReference对象调用load()方法,加载图片数据,然后创建BitmapData对象,展示预览。 4. **上传处理**:利用FileReference的upload()方法,将图片数据发送到服务器。可能需要设置HTTP头...
FileReference提供一个browse()方法打开文件对话框,选择的文件可以通过load()方法加载到内存中。File类更适合于AIR环境,它提供了更丰富的文件操作功能。 九、异常处理 在处理媒体文件时,可能遇到各种错误,如...
在Flex中,可能使用FileReference类来实现这一功能,允许用户选择本地路径并保存图片。 8. **事件监听和处理**: 在图片查看器中,可能会有许多事件监听器,如点击事件、滚动事件等。ActionScript的addEventListener...
上述代码中的fileReference.save()方法就是利用它来实现图片的本地保存。 6. **安全限制**:需要注意的是,由于Flash Player的安全沙箱限制,只有在用户交互后(如点击按钮)才能使用FileReference保存文件,否则会...