最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

JS解決IOS中照片預(yù)覽時旋轉(zhuǎn)90度出現(xiàn)的BUG

來源:懂視網(wǎng) 責(zé)編:小OO 時間:2020-11-27 20:13:13
文檔

JS解決IOS中照片預(yù)覽時旋轉(zhuǎn)90度出現(xiàn)的BUG

上篇文章【Js利用Canvas實現(xiàn)圖片壓縮功能】中做了圖片壓縮上傳,但是在IOS真機測試的時候,發(fā)現(xiàn)圖片預(yù)覽的時候自動逆時針旋轉(zhuǎn)了90度。對于這個bug,我完全不知道問題出在哪里,接下來就是面向百度編程了。通過度娘找到了相關(guān)資料,解決方法記錄在此。這個問題的具體因素其實我還是不清楚是為何導(dǎo)致的,只有IOS和部分三星手機會出現(xiàn)此bug。絕大部分的安卓機并無此問題。解決此問題需要引入一個第三方 JS 庫: exif.js 下載地址:https://github.com/exif-js/exif-js 通過exif.js 可以獲取到圖片的元信息,這其中就包括照片的拍照方向。而 exif.js 給出的照片方向?qū)傩匀缦聢D。
推薦度:
導(dǎo)讀上篇文章【Js利用Canvas實現(xiàn)圖片壓縮功能】中做了圖片壓縮上傳,但是在IOS真機測試的時候,發(fā)現(xiàn)圖片預(yù)覽的時候自動逆時針旋轉(zhuǎn)了90度。對于這個bug,我完全不知道問題出在哪里,接下來就是面向百度編程了。通過度娘找到了相關(guān)資料,解決方法記錄在此。這個問題的具體因素其實我還是不清楚是為何導(dǎo)致的,只有IOS和部分三星手機會出現(xiàn)此bug。絕大部分的安卓機并無此問題。解決此問題需要引入一個第三方 JS 庫: exif.js 下載地址:https://github.com/exif-js/exif-js 通過exif.js 可以獲取到圖片的元信息,這其中就包括照片的拍照方向。而 exif.js 給出的照片方向?qū)傩匀缦聢D。
下面小編就為大家?guī)硪黄狫S解決IOS中拍照圖片預(yù)覽旋轉(zhuǎn)90度BUG的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

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

而 exif.js 給出的照片方向?qū)傩匀缦聢D:

IOS中通過 exif.js ,獲取拍照的圖片的方向,返回的值為 6, 也就是上圖最左邊的 F 的情況。 這也正是我們的bug所在。 因此我們通過判斷方向的值來做相應(yīng)的處理,如果值為 6 ,則我們對圖片進行旋轉(zhuǎn)矯正。

具體代碼如下:

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

接下來我們將上篇文章中的壓縮函數(shù)修改如下:

//圖片壓縮
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 ,則旋轉(zhuǎn)矯正,反之則不做處理
 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, 問題解決!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

JS解決IOS中照片預(yù)覽時旋轉(zhuǎn)90度出現(xiàn)的BUG

上篇文章【Js利用Canvas實現(xiàn)圖片壓縮功能】中做了圖片壓縮上傳,但是在IOS真機測試的時候,發(fā)現(xiàn)圖片預(yù)覽的時候自動逆時針旋轉(zhuǎn)了90度。對于這個bug,我完全不知道問題出在哪里,接下來就是面向百度編程了。通過度娘找到了相關(guān)資料,解決方法記錄在此。這個問題的具體因素其實我還是不清楚是為何導(dǎo)致的,只有IOS和部分三星手機會出現(xiàn)此bug。絕大部分的安卓機并無此問題。解決此問題需要引入一個第三方 JS 庫: exif.js 下載地址:https://github.com/exif-js/exif-js 通過exif.js 可以獲取到圖片的元信息,這其中就包括照片的拍照方向。而 exif.js 給出的照片方向?qū)傩匀缦聢D。
推薦度:
標簽: 旋轉(zhuǎn) ios js
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top