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

Posted

技术标签:

【中文标题】exif-js 方向在 android 上总是返回 0 但在桌面上工作【英文标题】:exif-js orientation always returns 0 on android but works on desktop 【发布时间】:2020-03-03 22:14:55 【问题描述】:

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

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

我尝试将同一安卓设备拍摄的图像传输到桌面,然后从那里上传,在这种情况下一切正常,我得到了方向 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
                 
            );
            ....

我在安卓上使用 chrome 浏览器。

【问题讨论】:

【参考方案1】:

在我的项目进行了很多更改后,我使用了 this 前端处理图片旋转的库

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于exif-js 方向在 android 上总是返回 0 但在桌面上工作的主要内容,如果未能解决你的问题,请参考以下文章

暗模式:useColorScheme() 在 Android 上总是返回光

为啥 getSpeed() 在 android 上总是返回 0

在图像上设置 Exif 数据总是在 Android 7 上返回错误

Android:在方向更改时,总是调用 Web 服务 [重复]

FirebaseDynamicLinks.instance.getInitialLink() 在 Android 上总是返回 null

在 android 上使用 Socket.IO 总是返回 XHR 轮询错误