压缩上传并预览 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现在还在留恋.. ...
随机推荐
- jQuery实现网站图片放大效果
实现效果:当鼠标指向商品图片时,图片会自动放大. <!DOCTYPE html> <html> <head> <meta charset="UTF- ...
- SVN分支的合并和同步
使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到分支的管理,也不敢贸然使用合并功能,生怕合并出了问题对团队造成不良影响,最主要的原因是,自己对分支的目的和合并 ...
- HTTP协议与HTTPS的区别
permike 原文 HTTP协议与HTTPS的区别 HTTP协议 HTTP协议主要应用是在服务器和客户端之间,客户端接受超文本. HTTP是在七层网络模型中的应用层的协议,由发送请求和接受响应构成, ...
- 用socket操作redis
代码: $cmd = "*3\r\n$3\r\nSET\r\n$3\r\nfoo\r\n$3\r\nbar\r\n"; // set foo bar $socket = socke ...
- 基于jquery的表单校验插件 - formvalidator使用体验
下载地址:http://www.formvalidator.net/ 基本样例 <form action="/registration" method="POST& ...
- nginx优化配置
一.一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1. worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu ...
- Axis2/c 知识点
官网文档: http://axis.apache.org/axis2/c/core/docs/axis2c_manual.html 从文档中可以总结出: 1. Axis2/C是一个用C语言实现的We ...
- JAVA 子父类的特点
一.变量(属性) this 代表当前对象的引用 this.变量 首先在本类中找所需要的这个变量,如果没有找到再去父类中找 super 用于访问当前对象的父类成员 super.变量 直接在父 ...
- JAVA 对象初始化的过程
对象初始化的过程例:Student S = new Student();1.因为new Student()用到了Student类,所以会把它从硬盘上加载进入内存2.如果有static静态代 ...
- java静态代理
WorkIF.java package com.wzh.test; public interface WorkIf { void doWork(String name);} work.java pac ...