Ориентация exif изображения является одинаковым значением для всех изображений? - PullRequest
0 голосов
/ 20 февраля 2020

В веб-приложении (на iPhone 6 с) я использую exif для отображения выбранных изображений в правильной ориентации на основе данных exif.orientation.

Но предупреждение ниже показывает всегда одинаковая ориентация для всех изображений, и я не знаю, как заставить его отображать правильное значение ориентации для каждого изображения?

  1. Если я выберу 2 портретных изображения, то оно отобразит изображения правильно и ориентация показывает 6 в предупреждении.

  2. И если я выберу 2 изображения ландшафта, тогда оно отобразит правильные изображения, а в предупреждении будет показана ориентация 1.

  3. НО, если Я выбираю 1 портретное и 1 альбомное изображение, затем значение ориентации всегда равно 1, и портретное изображение отображается лежа (в альбомной ориентации - неправильно).

Так как я могу изменить мой код, чтобы он правильно загружал изображение на холсте? Большое спасибо за любой ввод!

document.getElementById('files').onchange = function (e) {
var image = e.target.files[0];

        URL=window.URL|| window.webkitURL;
        var fileURL=URL.createObjectURL(image);
        var img=new Image(); 
        img.src=fileURL; 

for (var i = 0; i < e.target.files.length; i++)
    {   

        $$(document).find('canvas').remove();
        var image = e.target.files[i];
        window.loadImage(image, function (img) {
            if (img.type === "error") {
                console.log("couldn't load image:", img);
            } else {

                window.EXIF.getData(image, function () {
                    //console.log("load image done!");
                    var orientation = window.EXIF.getTag(this, "Orientation");

                    alert(orientation);

                    var canvas = window.loadImage.scale(img,
                        {orientation: orientation || 0, canvas: true, maxHeight: 300});


                    document.getElementById("container").appendChild(canvas);


            });
                });
            }
        });
    }
    };

Так как я могу изменить это так, чтобы ориентация: ориентация в var canvas = window.loadImage.scale (img, {ориентация: ориентация || 0, холст: true, maxHeight: 300}); получает правильное значение?

Еще раз спасибо.

...