IPhone XR, изображение с камеры имеет ширину и высоту, переключается в JavaScript - PullRequest
1 голос
/ 28 марта 2019

Так что я, кажется, обнаружил странное поведение при определении типа изображения (пейзаж / портрет) на изображении 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])

1 Ответ

0 голосов
/ 08 апреля 2019

На самом деле ширина и высота не переключаются, вместо этого ваше портретное изображение является пейзажным изображением.Информация о том, что это ландшафтное изображение имеет портретную ориентацию, сохраняется в exif-данных файла изображения.Когда вы открываете изображение в macOS, iOS или Windows, оно проверяет exif-данные и поворачивает изображение на дисплее, так что вы никогда не заметите, что оно фактически сохраняется как альбомная.

Чтобы прочитать exif-данные в JavaScriptВы можете использовать такие скрипты, как exif-js или exif-parser .Затем вы можете вращать / вычислять вращение самостоятельно по заданному номеру ориентации:

enter image description here

Дополнительная информация об exif-ориентации: https://github.com/bwindels/exif-parser

...