HTML5前端图片压缩,兼容手机
来源:互联网 发布:网络维护人员工作理念 编辑:程序博客网 时间:2024/04/29 22:08
主要用了两个html5的 API,一个file,一个canvas,压缩主要使用cnavas做的,file是读取文件,之后把压缩好的照片放入内存,最后内存转入表单下img.src,随着表单提交。
照片是自己用单反拍的,5M多,压缩下面3张分别是600多kb,400多kb,300kb的最后那张失真度很大了,压缩效率蛮高的。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta charset="utf-8" /><title>File API Test</title><script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script><style>#test {display: none;}</style></head><body><input type="file" id="fileImg"><form><img src="" id="test" alt=""></form><script>function handleFileSelect(evt) {// var filebtn = document.getElementById(id);// console.log(filebtn);// var files = filebtn.target.files;// console.log(filebtn.target);// console.log(files);var files = evt.target.files;for ( var i = 0, f; f = files[i]; i++) {// Only process image files.if (!f.type.match('image.*')) {continue;}var reader = new FileReader();// Closure to capture the file information.reader.onload = (function(theFile) {return function(e) {// Render thumbnail.// console.log(evt.target.files[0]);// console.log(e.target);console.log(e.target.result);var i = document.getElementById("test");i.src = event.target.result;console.log($(i).width());console.log($(i).height());$(i).css('width', $(i).width() / 10 + 'px');//$(i).css('height',$(i).height()/10+'px');console.log($(i).width());console.log($(i).height());var quality = 50;i.src = jic.compress(i, quality).src;console.log(i.src);i.style.display = "block";};})(f);// Read in the image file as a data URL.reader.readAsDataURL(f);}}document.getElementById('fileImg').addEventListener('change',handleFileSelect, false);var jic = { /** * Receives an Image Object (can be JPG OR PNG) and returns a new Image Object compressed * @param {Image} source_img_obj The source Image Object * @param {Integer} quality The output quality of Image Object * @return {Image} result_image_obj The compressed Image Object */ compress: function(source_img_obj, quality, output_format){ var mime_type = "image/jpeg"; if(output_format!=undefined && output_format=="png"){ mime_type = "image/png"; } var cvs = document.createElement('canvas'); //naturalWidth真实图片的宽度 cvs.width = source_img_obj.naturalWidth; cvs.height = source_img_obj.naturalHeight; var ctx = cvs.getContext("2d").drawImage(source_img_obj, 0, 0); var newImageData = cvs.toDataURL(mime_type, quality/100); var result_image_obj = new Image(); result_image_obj.src = newImageData; return result_image_obj; }}</script></body></html>
在PC端是没有问题,手机端就获取不到data了,
整理至网络:
http://www.gbtags.com/gb/share/2991.htm
0 0
- HTML5前端图片压缩,兼容手机
- Html5前端图片压缩
- 利用HTML5,前端js实现图片压缩
- html5前端图片压缩打水印
- 利用HTML5,前端js实现图片压缩
- 前端中用手机拍照压缩,上传图片压缩
- 使用HTML5的两个api,前端js完成图片压缩。
- web前端之HTML5压缩图片compress image with canvas
- 使用HTML5的两个api,前端js完成图片压缩。
- 手机网页中通过js+html5压缩上传图片
- html5 图片上传,支持图片预览、压缩、及进度显示,兼容IE6+及标准浏览器
- html5 压缩图片上传
- html5 canvas 图片压缩
- 前端图片压缩 pngquanty
- 前端压缩图片
- 移动前端图片压缩
- 一款前端本地客户端压缩图片的工具,兼容IOS,Android,PC。
- 前端本地客户端压缩图片,兼容IOS,Android,PC、自动按需加载文件
- 排列组合
- 第十三周项目3:成绩处理函数模板
- poj1061青蛙的约会--扩展欧几里得
- 遍历目录
- iPhone应用设计之被忽视的细节(1): Photoshop分辨率设置
- HTML5前端图片压缩,兼容手机
- mysql装了又装
- RTSP流媒体播放器实现
- (转)Hadoop YARN配置参数剖析(1)—RM与NM相关参数
- lvs、haproxy、nginx负载均衡
- 字符串
- 递归算法
- 我的互联网方法论-周鸿祎
- Office开发人员中心