js 压缩大图片
2017-10-12 14:22
162 查看
dealImage(getObjectURL(fileObj[0]), {width : 200}, function(base){
$(".testImg").attr("src",base);
})
/**
* 图片压缩,默认同比例压缩
* @param {Object} path
* pc端传入的路径可以为相对路径,但是在移动端上必须传入的路径是照相图片储存的绝对路径
* @param {Object} obj
* obj 对象 有 width, height, quality(0-1) 不传width和 height,图片大小不变只改变像素值
* @param {Object} callback
* 回调函数有一个参数,base64的字符串数据
*/
function dealImage(path, obj, callback){
var img = new Image();
img.src = path;
img.onload = function(){
var that = this;
// 默认按比例压缩
var w = that.width,
h = that.height,
scale = w / h;
w = obj.width || w;
h = obj.height || (w / scale);
var quality = 0.3; // 默认图片质量为0.7
//生成canvas
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
// 创建属性节点
var anw = document.createAttribute("width");
anw.nodeValue = w;
var anh = document.createAttribute("height");
anh.nodeValue = h;
canvas.setAttributeNode(anw);
canvas.setAttributeNode(anh);
ctx.drawImage(that, 0, 0, w, h);
// 图像质量
if(obj.quality && obj.quality <= 1 && obj.quality > 0){
quality = obj.quality;
}
// quality值越小,所绘制出的图像越模糊
var base64 = canvas.toDataURL('image/jpeg', quality );
// 回调函数返回base64的值
callback(base64);
}
}
$(".testImg").attr("src",base);
})
/**
* 图片压缩,默认同比例压缩
* @param {Object} path
* pc端传入的路径可以为相对路径,但是在移动端上必须传入的路径是照相图片储存的绝对路径
* @param {Object} obj
* obj 对象 有 width, height, quality(0-1) 不传width和 height,图片大小不变只改变像素值
* @param {Object} callback
* 回调函数有一个参数,base64的字符串数据
*/
function dealImage(path, obj, callback){
var img = new Image();
img.src = path;
img.onload = function(){
var that = this;
// 默认按比例压缩
var w = that.width,
h = that.height,
scale = w / h;
w = obj.width || w;
h = obj.height || (w / scale);
var quality = 0.3; // 默认图片质量为0.7
//生成canvas
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
// 创建属性节点
var anw = document.createAttribute("width");
anw.nodeValue = w;
var anh = document.createAttribute("height");
anh.nodeValue = h;
canvas.setAttributeNode(anw);
canvas.setAttributeNode(anh);
ctx.drawImage(that, 0, 0, w, h);
// 图像质量
if(obj.quality && obj.quality <= 1 && obj.quality > 0){
quality = obj.quality;
}
// quality值越小,所绘制出的图像越模糊
var base64 = canvas.toDataURL('image/jpeg', quality );
// 回调函数返回base64的值
callback(base64);
}
}
相关文章推荐
- js图片转base64编码压缩上传
- js图片转base64并压缩
- Gulp实现css、js、图片的压缩以及css、js文件的MD5命名
- 用html5 canvas js 实现图片大小的压缩显示,图片上传后可在线预览。
- 使用HTML5的两个api,前端js完成图片压缩。
- 手机网页版JS压缩上传图片--base64位 兼容IOS和安卓
- js移动端/H5同时选择多张图片上传并使用canvas压缩图片
- 纯原生js移动端图片压缩上传插件
- Js利用Canvas实现图片压缩
- js,angularjs 图片上传服务器,并解决照片旋转问题,前端图片压缩上传
- 使用HTML5的两个api,前端js完成图片压缩
- 推荐一个用于压缩图片的JS插件:localResizeIMG
- js加canvas实现图片的预览压缩和上传
- Js(基于jQuey)网页端压缩图片后上传服务器
- JS实现word、压缩文件、图片等下载
- js 图片压缩上传(纯js的质量压缩,非长宽压缩)
- JS实现图片base64转blob对象,压缩图片,预览图片,图片旋转到正确角度
- 在线的图片、js、css压缩优化工具介绍(配合小强视频 前端性能分析精要)
- (c#.net)前端js图片压缩将得到的base64字符串保存为图片