exif-js 方向总是 returns 0 on android 但在桌面上工作

exif-js orientation always returns 0 on android but works on desktop

我正在使用 exif-js 库从上传到我的网络应用程序的图像中提取方向。 我需要 exif 方向来旋转错误旋转的 android 图像。

问题是从 android 设备上传的图像总是 return 0 作为它们的方向。

我试过将从同一 android 设备拍摄的图像传输到桌面,并从那里上传,在这种情况下一切正常,我得到了方向 6。

localforage.getItem('photo').then(function(value) {
                alert('inside forage');
            image = value;
            alert(image); // i get the image object
            url = window.URL.createObjectURL(image);
            alert(url); // url is correct
                let preview = document.getElementById('camera-feed');
                preview.src = url;
                // const tags = ExifReader.load(image);
                console.log( tags );
            EXIF.getData(image, function() {
               myData = this;
                 if (myData.exifdata.Orientation) {
                        orientation = parseInt(EXIF.getTag(this, "Orientation"));
                        alert(orientation); // on desktop 6, on android always 0
                 }
            });
            ....

我在 android 上使用 chrome 浏览器。

在我的项目中进行了大量更改之后,我使用了 this 在前端处理图像旋转的库

我知道你已经解决了这个问题,但如果你需要的不仅仅是方向,我仍然想推荐 exifr 库。或者,如果性能对您很重要。 Exifr 速度很快,可以处理数百张照片而不会导致浏览器崩溃或花费很长时间 :)。此外还有简洁的 API,你可以用几乎任何东西来喂它——元素、URL、缓冲区、ArrayBuffer,甚至是 base64 url 或字符串等等。

exifr.orientation(file).then(val => {
  console.log('orientation:', val)
})