IPhone XR,来自照相机的图像在javascript中具有宽度和高度切换

IPhone XR,来自照相机的图像在javascript中具有宽度和高度切换,javascript,iphone,heic,iphone-xr,Javascript,Iphone,Heic,Iphone Xr,所以当我在IPhone XR图像(heic格式)上检测图像类型(横向/纵向)时,我似乎发现了一种奇怪的行为。javascript似乎已经改变了图像的宽度和高度。有关于这种行为的任何信息吗?或者你们有什么建议吗?在任何其他图像中检测正常行为的代码 reader.onload = function (e) { const img = new Image() img.src = e.target.result

所以当我在IPhone XR图像(heic格式)上检测图像类型(横向/纵向)时,我似乎发现了一种奇怪的行为。javascript似乎已经改变了图像的宽度和高度。有关于这种行为的任何信息吗?或者你们有什么建议吗?在任何其他图像中检测正常行为的代码

reader.onload = function (e) {
                    const img = new Image()
                    img.src = e.target.result
                    img.onload = (f) => {
                        // nuxt,vue 
                        that.$nextTick(() => {
                            const width = img.width
                            const height = img.height
                            console.log(img.width, img.naturalWidth, img.height, img.naturalHeight)
                            if (height > width) {
                                that.imgType = 'portrait'
                            } else {
                                that.imgType = 'landscape'
                            }
                            console.log(that.imgType)
                        })
                    }
                    that.img = img
                }
                reader.readAsDataURL(this.$refs.fileUpload.files[0])

实际上,宽度和高度没有切换,相反,您的肖像图像是一幅风景图像。此Landscape图像具有纵向的信息保存在图像文件的exif数据中。当您在macOS、iOS或Windows上打开图像时,它会检查exif数据并在显示时旋转图像,因此您永远不会注意到它实际上保存为横向

要读取JavaScript中的exif数据,可以使用或之类的脚本。然后,您可以根据给定的方向号自行旋转/计算旋转:


关于exif方向的更多信息:

实际上宽度和高度没有切换,而是您的纵向图像是横向图像。此Landscape图像具有纵向的信息保存在图像文件的exif数据中。当您在macOS、iOS或Windows上打开图像时,它会检查exif数据并在显示时旋转图像,因此您永远不会注意到它实际上保存为横向

要读取JavaScript中的exif数据,可以使用或之类的脚本。然后,您可以根据给定的方向号自行旋转/计算旋转:

有关exif方向的更多信息: