var newImageData;
function canvasContraction(file) {//压缩图片俊生
var Orientation = null;//图片方向角
EXIF.getData(file, function() {//插件引入处理
// alert(EXIF.pretty(this));
EXIF.getAllTags(this);
//alert(EXIF.getTag(this, 'Orientation'));
Orientation = EXIF.getTag(this, 'Orientation');
//return;
});
imgUP_big_loading();//加载效果
var ratio = "0.2";//压缩值
if(file.size <= 500 * 1024){//
ratio = 0.6;//压缩系数
}else if(file.size > 500 * 1024 && file.size < 2000 * 1024){
ratio = 0.3;
}else{
ratio = 0.1;
}
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function(e) {
var result = event.target.result; //返回的dataURL
var image = new Image();
image.src = result;
image.onload = function () { //创建一个image对象,给canvas绘制使用
var cvs = document.createElement('canvas');
cvs.width = this.width;
cvs.height = this.height;
var ctx = cvs.getContext('2d');
ctx.drawImage(this, 0, 0, cvs.width, cvs.height);
if (navigator.userAgent.match(/iphone/i)) {//苹果机型侦测
//console.log('iphone');
//alert(expectWidth + ',' + expectHeight);
//如果方向角不为1,都需要进行旋转 added by lzk
if(Orientation != "" && Orientation != 1){
//alert('旋转处理');
switch(Orientation){
case 6://需要顺时针(向左)90度旋转
var x = cvs.width/2; //画布宽度的一半
var y = cvs.height/2;//画布高度的一半
ctx.clearRect(0,0, cvs.width, cvs.height);//先清掉画布上的内容
ctx.translate(x,y);//将绘图原点移到画布中点
ctx.rotate(90*Math.PI/180);
ctx.translate(-x,-y);//将画布原点移动
ctx.drawImage(this, 0, 0, cvs.width, cvs.height);//画画
break;
case 8://需要逆时针(向右)90度旋转
var x = cvs.width/2; //画布宽度的一半
var y = cvs.height/2;//画布高度的一半
ctx.translate(x,y);//将绘图原点移到画布中点
ctx.rotate(90*Math.PI/180);
ctx.translate(-x,-y);//将画布原点移动
ctx.drawImage(this, 0, 0, cvs.width, cvs.height);//画画
break;
}
}else{
ctx.drawImage(this, 0, 0, cvs.width, cvs.height);
}
}
newImageData = cvs.toDataURL('image/jpeg', ratio);//base64的压缩图片,完成
}
IOS上传图片翻转处理重力并压缩大小
最新推荐文章于 2021-07-26 15:57:46 发布