В веб-приложении (на iPhone 6 с) я использую exif для отображения выбранных изображений в правильной ориентации на основе данных exif.orientation.
Но предупреждение ниже показывает всегда одинаковая ориентация для всех изображений, и я не знаю, как заставить его отображать правильное значение ориентации для каждого изображения?
Если я выберу 2 портретных изображения, то оно отобразит изображения правильно и ориентация показывает 6 в предупреждении.
И если я выберу 2 изображения ландшафта, тогда оно отобразит правильные изображения, а в предупреждении будет показана ориентация 1.
НО, если Я выбираю 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}); получает правильное значение?
Еще раз спасибо.