<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 } }