压缩上传并预览 flash
最近研究一个功能:用as3写的上传图片并实现预览。觉得花了很多时间也学到很多知识,将自己的所得记录下来供大家分享。
首先是预览功能的实现,大家自然而然就想到了loader来加载图片并显示,由于项目没有对图片大小进行限制,所以加载的时候会非常慢。场景:如果同时加载100张5M以上的图片,内存可能会升到1000M以上,导致机器卡死。
解决方案:
1.不要同时加载100张图片,一张加载完再加载下一张。 这个是参照网易相册的上传功能,qq空间的上传功能来源于插件,qq相册也是flash写的,仍存在很卡的问题
2.如果需要多个loader来加载,图片就需要用bitmap显示出来,并将loader释放掉内存,方式是:
(loader.contentLoaderInfo.content as Bitmap).bitmapData.dispose();//从内存中删除原图的bitmapData引用
loader.unload(); loader = null;//将loader置为空
当然,用一个loader更好,直接通过loader控制大小显示成缩略图,也不用释放掉
3.用filereference打开本地图片,记得在加载完图片释放掉filereference数据,方式是:
filereference.data.clear();//不清除,内存会一直很高
4.当加载的图片很多,会想到用scrollpane,但是一方面滚动条不美观,另一方面会碰到一些浏览器兼容问题,像有的浏览器的滚动事件会失效,我的处理方式是自己重写滚动条,通过遮罩控制显示区域,并用js监听滚轮事件,可以参照 http://www.cnblogs.com/meteoric_cry/archive/2013/01/06/2848221.html
然后是上传功能的问题,首先了解上传的3中方式,参照http://blog.csdn.net/txiejun/article/details/6934107因为是压缩上传,我们想到了用urlLoader进行二进制上传,关键问题是urlLoader无法监听上传进度事件,解决方案来源于http://stackoverflow.com/questions/9559948/post-file-upload-using-urlrequest,利用filereference来上传二进制,根据文章和实践发现,上传时仍然会报错,于是我们把上传的二进制转化成字符串就没问题了,压缩是通过jpgEncoder进行的,因为效率比较低,显示压缩进度会给用户更好的体验。
(上传功能这一块,出现误区,就是用filereference上传二进制的方式,虽然实现了二进制的上传,实际却把原图一起上传了,这样很占带宽,仍在找方案)
经验总结:关注内存,关注用户体验
压缩上传并预览 flash的更多相关文章
- vue开发中vue-resource + canvas 图片压缩、上传、预览
1.使用vue-resource上传,也可以自定义ajax上传: 2.使用<input type="file" @change="submit()" na ...
- Jcrop+uploadify+php实现上传头像预览裁剪
最近由于项目需要,所以做了一个上传头像预览并且可以预览裁剪的功能,大概思路是上传的图片先保存到服务器,然后通过ajax从服务器获取到图片信息,再利用Jcrop插件进行裁剪,之后通过PHP获取到的四个裁 ...
- input file实现多选,限制文件上传类型,图片上传前预览功能
限制上传类型 & 多选:① accept 属性只能与 <input type="file" /> 配合使用.它规定能够通过文件上传进行提交的文件类型. ② mu ...
- servlet实现文件上传,预览,下载和删除
一.准备工作 1.1 文件上传插件:uploadify: 1.2 文件上传所需jar包:commons-fileupload-1.3.1.jar和commons-io-2.2.jar 1.3 将数 ...
- 小程序实现图片上传,预览以及图片base64位处理
最近一段时间在做小程序项目,第一期功也完工了.需要好好总结一下经验,把项目中遇到的问题好好总结一下,遇到的问题,踩过的坑.今天写一个小程序实现图片上传,预览,以及删除,图片base64位处理.下面就是 ...
- hTML5实现表单内的上传文件框,上传前预览图片,针刷新预览images
hTML5实现表单内的上传文件框,上传前预览图片,针刷新预览images, 本例子主要是使用HTML5 的File API,建立一個可存取到该file的url, 一个空的img标签,ID为img0,把 ...
- html之file标签 --- 图片上传前预览 -- FileReader
记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能.当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了 ...
- 【转】HTML5 jQuery图片上传前预览
hTML5实现表单内的上传文件框,上传前预览图片,针刷新预览images,本例子主要是使用HTML5 的File API,建立一個可存取到该 file的url,一个空的img标签,ID为img0,把选 ...
- ASP.NET MVC图片上传前预览
回老家过春节,大半个月,在家的日子里,吃好睡好,人也长了3.5Kg.没有电脑,没有网络,无需写代码,工作上相关的完全放下......开心与父母妻儿过个年,那样的生活令Insus.NET现在还在留恋.. ...
随机推荐
- css 默认
先写全局的样式 body { margin:0 auto; font-size:12px; font-family:Verdana; line-height:1.5;} ul,dl,dd,h1,h2, ...
- uboot 环境变量
从bootm 命令讲起 1 找到linux的内核入口 Bootm命令通过读取uImage的头部0×40字节的信息,将uImage定位到正确的地址,同时找到linux的内核入口地址. 这个地方就涉及到u ...
- angularjs中ng-route和ui-router简单用法的代码比较
1.使用ng-route: app.js中的写法: var app=angular.module('birthdayApp',['ngRoute']); app.config(function($ro ...
- 技巧分享——如何去除多余的CSS代码?
有时候,当你的CSS代码过多的时候,而且已经明确知道有部分CSS代码是多余的: 这时候,有什么较快的办法可以去除多余的CSS呢?? 下面分享一个实用技巧: 1.使用谷歌浏览器:Chrome .下载 2 ...
- javaweb工程,Servlet里面获取当前WEB跟路径的文件绝对路径地址
String base_Url = request.getSession().getServletContext().getRealPath("/"); String window ...
- 在编译oc中protocol时出现的错误
Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang ...
- XML封装与验证消息
Document document = DocumentHelper.createDocument(); document.setXMLEncoding(ChARSET_UTF_8); Element ...
- Hbase的安装(hadoop-2.6.0,hbase1.0)
Hbase的安装相对很简单啊...只要你装了Hadoop 装Hbase就是分分钟的事 如果要装hadoop集群的话 hadoop分类的集群安装好了,如果已经装好单机版~ 那就再配置如下就好~ 一.vi ...
- DBA_Oracle基本体系内存和进程结构(概念)
2014-08-05 Created By BaoXinjian
- REST总结(转)
REST总结 REST(Representational State Transfer)是代表状态传输的缩写,它代表了分布式超媒体系统的体系结构风格,它是一种针对网络应用的设计和开 ...