91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JS解決IOS中拍照圖片預覽旋轉90度BUG的問題

發布時間:2020-08-28 13:03:50 來源:腳本之家 閱讀:531 作者:similar 欄目:web開發

上篇文章【Js利用Canvas實現圖片壓縮功能】中做了圖片壓縮上傳,但是在IOS真機測試的時候,發現圖片預覽的時候自動逆時針旋轉了90度。對于這個bug,我完全不知道問題出在哪里,接下來就是面向百度編程了。通過度娘找到了相關資料,解決方法記錄在此。這個問題的具體因素其實我還是不清楚是為何導致的,只有IOS和部分三星手機會出現此bug。 絕大部分的安卓機并無此問題。

解決此問題需要引入一個第三方 JS 庫: exif.js 下載地址:https://github.com/exif-js/exif-js 通過exif.js 我們可以獲取到圖片的元信息,這其中就包括照片的拍照方向。

而 exif.js 給出的照片方向屬性如下圖:

JS解決IOS中拍照圖片預覽旋轉90度BUG的問題

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, img64, 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);
   }

   img64 = canvas.toDataURL("image/jpeg", ratio);
   return img64;
}

OK, 問題解決!

以上這篇JS解決IOS中拍照圖片預覽旋轉90度BUG的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平顶山市| 稷山县| 诸暨市| 柳林县| 积石山| 仁布县| 湖南省| 桓台县| 滁州市| 佛冈县| 玛沁县| 博罗县| 从江县| 西青区| 黄梅县| 井陉县| 九江市| 甘肃省| 界首市| 龙岩市| 奉新县| 察隅县| 清原| 尉犁县| 古交市| 遂昌县| 会昌县| 松溪县| 沧州市| 吴旗县| 郁南县| 三明市| 礼泉县| 连江县| 永善县| 偃师市| 陇南市| 章丘市| 邵东县| 马龙县| 湄潭县|