js 压缩图片 H5
来源:互联网 发布:msdia80.dll是什么知乎 编辑:程序博客网 时间:2024/05/29 13:48
原理 用 canvas的 toDataURI (type , int ) 如果type
参数的值为image/jpeg或
image/webp
,则第二个参数的值如果在0.0和1.0之间的话,会被看作是图片质量参数
dataURI转 blob的代码是 copy 来的
压缩代码
/*common*/var canvasSupported = isCanvasSupported()function dataURItoBlob(dataURI) { // convert base64 to raw binary data held in a string var byteString ,mimestring if(dataURI.split(',')[0].indexOf('base64') !== -1 ) { byteString = atob(dataURI.split(',')[1]) } else { byteString = decodeURI(dataURI.split(',')[1]) } mimestring = dataURI.split(',')[0].split(':')[1].split(';')[0] var content = new Array(); for (var i = 0; i < byteString.length; i++) { content[i] = byteString.charCodeAt(i) } return new Blob([new Uint8Array(content)], {type: mimestring});}function imgScale (src , scale,cbk) { if (!src) return cbk(false) var _canvas = document.createElement('canvas') var tImg = new Image tImg.onload = function(){ var _context = _canvas.getContext('2d'); _context.drawImage(tImg,0,0); var type = 'image/jpeg' src = _canvas.toDataURL(type , scale) var blob = dataURItoBlob(src) cbk(blob) /* var r = _canvas.mozGetAsFile('f' , type) cbk(r) */ }; tImg.src = src}function isCanvasSupported(){ var elem = document.createElement('canvas'); return !!(elem.getContext && elem.getContext('2d'));}exports.support = canvasSupported /* opt {scale :0-1}*/exports.zip = function(files ,opt,cbk){ opt = opt || {} var scale = opt.scale if (!canvasSupported) return cbk(files) if (!scale || 1 == scale ) return cbk(files) var files_count = files.length ,ret = [] for (var i = 0 ,j = files.length ; i<j ; i++){ var fReader = new FileReader(); fReader.onload = function (e){ var result = e.target.result imgScale(result , scale ,function(file){ file && ret.push(file) files_count-- if (files_count <= 0 ) cbk && cbk(ret) }) }; fReader.readAsDataURL(files[i]); }}
使用
var compress = require('app/compress')if (compress.support){ compress.zip(files , {'scale':opt.compress} , function(files){ console.log(files) //返回的 blob 对象可以 append 到 FormData对象上 用 ajax 上传 })}
0 0
- js 压缩图片 H5
- js 压缩图片 H5
- js图片压缩-H5
- H5+ 图片压缩上传
- H5 图片压缩上传
- H5图片压缩代码
- h5图片压缩
- H5图片压缩与上传
- H5 图片压缩上传解决方案
- H5图片压缩与上传
- h5图片上传和压缩
- H5+MUI+Node.js+Socket.io实现即时聊天以及发送+图片压缩+图片预览保存
- H5+MUI+Node.js+Socket.io群组即时聊天+发送图片+图片压缩
- js h5 上传图片 转成base64 进行图片压缩 不失真
- H5压缩图片 AJAX上传图片
- H5压缩图片 AJAX上传图片
- H5 canvas实现客户端压缩图片上传
- H5多图片压缩加水印上传
- 半个柏林的路灯都让这家公司变成了电动汽车充电桩
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 一种Unity2D多分辨率屏幕适配方案
- MyEclipse不能部署工程
- 看透智能机器人现在和未来
- js 压缩图片 H5
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 曾推动微信运动成为潮流的乐心,想要用小米模式跟传统医疗说不
- PHP遍历目录并保存
- [unity3d]屏幕坐标跟世界坐标的转换
- Matlab矩阵的按列存储理解
- 卖6000块的扫地机器人和我家500块的能有啥区别?
- 图结构练习——最小生成树
- 第十一周实践项目1 - 二叉树算法验证(1)层次遍历算法的验证