解決ios下拍照自動旋轉問題

 


 <input class="sr-only" id="inputImage" name="file" type="file" accept="image/*"  onchange="getFile()"> 上傳照片javascript


<canvas id="canvas" style="height: 0px"></canvas>java

須要引入EXIF.jscanvas

function getFile() {
        // alert(1111);
      let _this = this
      let img = document.getElementById('image')
      let file = document.getElementById('inputImage').files[0]
      let reader = new FileReader()
      _this.finish = 1
      EXIF.getData(file, function () {
        console.log(1111);
                let orientation = EXIF.getTag(this, 'Orientation')
                console.log(orientation);
                reader.addEventListener('load', function () {
                    console.log(1111);
                let image = new Image()
                image.src = reader.result
                sessionStorage.setItem('imgBase', reader.result);
                console.log(reader.result);
                let canvas = document.getElementById('canvas') //  處理位置不對的圖片
                let ctx = canvas.getContext('2d')
                image.onload = function () {
                if (navigator.userAgent.match(/iphone|ipod|ipad|62\.0\.3202.84\sMobile\sSafari\/537\.36\sMicroMessenger|57\.0\.2987\.132\sMQQBrowser/i)) {
                        if (orientation != '' && orientation != undefined && orientation != 1) {
                          switch (orientation) {
                            case 6: // 須要順時針(向左)90度旋轉
                              canvas.width = image.height
                                  canvas.height = image.width
                                ctx.rotate(90 * Math.PI / 180)
                                    ctx.drawImage(this, 0, -image.height)
                                break
                            case 8: // 須要逆時針(向右)90度旋轉
                              canvas.width = image.height
                                  canvas.height = image.width
                                ctx.rotate(270 * Math.PI / 180)
                                    ctx.drawImage(this, -image.width, 0)
                                break
                            case 3: // 須要180度旋轉
                              canvas.width = image.width
                                  canvas.height = image.height
                                ctx.rotate(180 * Math.PI / 180)
                                    ctx.drawImage(this, -image.width, -image.height)
                                break
                          }
                        } else {
                          canvas.width = image.width
                        canvas.height = image.height
                          ctx.drawImage(this, 0, 0, image.width, image.height)
                        }
                    } else {
                      canvas.width = image.width
                      canvas.height = image.height
                        ctx.drawImage(this, 0, 0, image.width, image.height)
                    }
                    // Indicator.close()
                    _this.imgsrc = canvas.toDataURL()
                    _this.finish = 0
                  }
          image.onerror = function () {
            _this.finish = 0
            Toast({message: '圖片上傳錯誤,請重試', duration: 1500})
          }
              }, false)
            })
            if (file) {
                reader.readAsDataURL(file)
            } else {
                // Indicator.close()
                _this.finish = 0
            }
    }
相關文章
相關標籤/搜索