最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS解決IOS中拍照圖片預(yù)覽旋轉(zhuǎn)90度BUG的問題

 更新時間:2017年09月13日 07:57:59   作者:similar  
下面小編就為大家?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 ,則我們對圖片進(jìn)行旋轉(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, 問題解決!

以上這篇JS解決IOS中拍照圖片預(yù)覽旋轉(zhuǎn)90度BUG的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • js鼠標(biāo)滑過彈出層的定位IE6bug解決辦法

    js鼠標(biāo)滑過彈出層的定位IE6bug解決辦法

    大家在寫div+css的時候經(jīng)常會用到彈出層,由于IE6的bug,所以當(dāng)使用多個標(biāo)簽重復(fù)寫彈出層的時候會遇到后面的層壓在了彈出層的上面;用Jquery給彈出層的z軸依次增加高度可解決.代碼很簡單,效果很顯著,需要了解的朋友可以參考下
    2012-12-12
  • JavaScript 巧學(xué)巧用

    JavaScript 巧學(xué)巧用

    本文主要給大家分享一下在編寫JavaScript代碼的時候存在的一些方法和技巧,雖然有時候條條大路都通向羅馬,但是也許總會有那么一條最短的路徑可走。希望通過以下幾點JavaScript技巧讓大家的代碼“化繁為簡,化簡為精”
    2017-05-05
  • 微信小程序自定義彈窗wcPop插件

    微信小程序自定義彈窗wcPop插件

    平時在開發(fā)小程序的時候,彈窗應(yīng)用場景還是蠻廣泛的,但是微信官方提供的彈窗比較有局限性,不能自定義修改。下面通過本文給大家?guī)砹宋⑿判〕绦蜃远x彈窗wcPop插件,感興趣的朋友跟隨小編一起看看吧
    2018-11-11
  • canvas濾鏡效果實現(xiàn)代碼

    canvas濾鏡效果實現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了canvas濾鏡效果的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • js實現(xiàn)簡易彈幕系統(tǒng)

    js實現(xiàn)簡易彈幕系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)簡易彈幕系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 微信小程序抽獎組件的使用步驟

    微信小程序抽獎組件的使用步驟

    這篇文章主要給大家介紹了關(guān)于微信小程序抽獎組件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • JavaScript與jQuery中文檔就緒函數(shù)的區(qū)別

    JavaScript與jQuery中文檔就緒函數(shù)的區(qū)別

    這篇文章主要介紹了JavaScript與jQuery中文檔就緒函數(shù)的區(qū)別,文章內(nèi)容介紹詳細(xì),具有一的的參考價值,需要的小伙伴可以參考一下
    2022-03-03
  • bootstrap導(dǎo)航條實現(xiàn)代碼

    bootstrap導(dǎo)航條實現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了bootstrap導(dǎo)航條的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 微信小程序中的生命周期與生命周期函數(shù)淺析介紹

    微信小程序中的生命周期與生命周期函數(shù)淺析介紹

    這篇文章主要介紹了微信小程序中的生命周期與生命周期函數(shù)的介紹,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Base64編碼加密JS代碼網(wǎng)頁版

    Base64編碼加密JS代碼網(wǎng)頁版

    Base64編碼加密JS代碼網(wǎng)頁版,在文本框中輸入任意字符串,即可將該字符串按Base64編碼進(jìn)行加密,也可將任意Base64編碼的字符解密顯示正常值
    2013-03-03

最新評論

桂阳县| 大悟县| 漠河县| 张北县| 邵东县| 九江县| 潼关县| 枣阳市| 兴山县| 武邑县| 克山县| 榆社县| 烟台市| 东兰县| 吉木乃县| 桐乡市| 阿城市| 兴隆县| 东山县| 岑溪市| 洛隆县| 吉安市| 同江市| 曲麻莱县| 杭锦旗| 汝南县| 电白县| 高清| 南陵县| 尼勒克县| 大名县| 巴中市| 客服| 平顶山市| 新干县| 汶上县| 甘肃省| 邹平县| 中西区| 鄂州市| 定州市|