冠东财富
您的当前位置:首页IOS拍照图片预览旋转90度怎么用JS处理

IOS拍照图片预览旋转90度怎么用JS处理

来源:冠东财富


这次给大家带来IOS拍照图片预览旋转90度怎么用JS处理,IOS拍照图片预览旋转90度用JS处理的注意事项有哪些,下面就是实战案例,一起来看一下。

解决此问题需要引入一个第三方 JS 库: exif.js 下载地址:https://github.com/exif-js/exif-js 通过exif.js 我们可以获取到图片的元信息,这其中就包括照片的拍照方向。

而 exif.js 给出的照片方向属性,IOS中通过 exif.js ,获取拍照的图片的方向,返回的值为 6, 也就是上图最左边的 F 的情况。 这也正是我们的bug所在。 因此我们通过判断方向的值来做相应的处理,如果值为 6 ,则我们对图片进行旋转矫正。

具体代码如下:

//获取图片方向
function getPhotoOrientation(img) {
 var orient;
 EXIF.getData(img, function () {
 orient = EXIF.getTag(this, 'Orientation');
 });
 return orient;
}

接下来我们将上篇文章中的压缩函数修改如下:

//图片压缩
function compress(img, width, height, ratio) {
 var canvas, ctx, img, orient;
??? 
 //获取图片方向
 orient = getPhotoOrientation(img);
 canvas = document.createElement('canvas');
 canvas.width = width;
 canvas.height = height;
 ctx = canvas.getContext("2d");
 //如果图片方向等于6 ,则旋转矫正,反之则不做处理
 if (orient == 6) {
 ctx.save();
 ctx.translate(width / 2, height / 2);
 ctx.rotate(90 * Math.PI / 180);
 ctx.drawImage(img, 0 - height / 2, 0 - width / 2, height, width);
 ctx.restore();
 } else {
 ctx.drawImage(img, 0, 0, width, height);
 }
 img = canvas.toDataURL("image/jpeg", ratio);
 return img;
}

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

显示全文