AngularJS 1.5 项目中的正确图像方向
Proper image orientation in AngularJS 1.5 project
从 iPhone 拍摄的横向图像在桌面 Chrome 上显示倒置,但在 iPhone Safari 上显示正确方向。一个例子是首页的汽车https://www.dapidi.com/#/
我怀疑问题出在浏览器或设备上。在寻找答案后,我遇到了这个指令,它似乎在大多数情况下都有效,但不适用于这辆车的形象。我相信这应该已经是 "solved problem",但我似乎找不到答案。任何人都可以解决这个常见的难题吗?
指令
angular.module('myApp')
.directive('imgOrientation', function(){
return {
restrict: 'A',
link: function(scope, element/*, attrs*/) {
function setTransform(transform) {
element.css('-ms-transform', transform);
element.css('-webkit-transform', transform);
element.css('-moz-transform', transform);
element.css('transform', transform);
}
var parent = element.parent();
$(element).bind('load', function() {
EXIF.getData(element[0], function() {
var orientation = EXIF.getTag(element[0], 'Orientation');
var height = element.height();
var width = element.width();
if (orientation && orientation !== 1) {
switch (orientation) {
case 2:
setTransform('rotateY(180deg)');
break;
case 3:
setTransform('rotate(180deg)');
break;
case 4:
setTransform('rotateX(180deg)');
break;
case 5:
setTransform('rotateZ(90deg) rotateX(180deg)');
if (width > height) {
parent.css('height', width + 'px');
element.css('margin-top', ((width -height) / 2) + 'px');
}
break;
case 6:
setTransform('rotate(90deg)');
if (width > height) {
parent.css('height', width + 'px');
element.css('margin-top', ((width -height) / 2) + 'px');
}
break;
case 7:
setTransform('rotateZ(90deg) rotateY(180deg)');
if (width > height) {
parent.css('height', width + 'px');
element.css('margin-top', ((width -height) / 2) + 'px');
}
break;
case 8:
setTransform('rotate(-90deg)');
if (width > height) {
parent.css('height', width + 'px');
element.css('margin-top', ((width -height) / 2) + 'px');
}
break;
}
}
});
});
}
};
});
用户错误。我在 HTML 中的指令属性名称中有错字。
是:img-fix-orientation
应该是:img-orientation
(脸掌)
忘了我在某个时候给它重命名了。
该指令似乎有效。
从 iPhone 拍摄的横向图像在桌面 Chrome 上显示倒置,但在 iPhone Safari 上显示正确方向。一个例子是首页的汽车https://www.dapidi.com/#/
我怀疑问题出在浏览器或设备上。在寻找答案后,我遇到了这个指令,它似乎在大多数情况下都有效,但不适用于这辆车的形象。我相信这应该已经是 "solved problem",但我似乎找不到答案。任何人都可以解决这个常见的难题吗?
指令
angular.module('myApp')
.directive('imgOrientation', function(){
return {
restrict: 'A',
link: function(scope, element/*, attrs*/) {
function setTransform(transform) {
element.css('-ms-transform', transform);
element.css('-webkit-transform', transform);
element.css('-moz-transform', transform);
element.css('transform', transform);
}
var parent = element.parent();
$(element).bind('load', function() {
EXIF.getData(element[0], function() {
var orientation = EXIF.getTag(element[0], 'Orientation');
var height = element.height();
var width = element.width();
if (orientation && orientation !== 1) {
switch (orientation) {
case 2:
setTransform('rotateY(180deg)');
break;
case 3:
setTransform('rotate(180deg)');
break;
case 4:
setTransform('rotateX(180deg)');
break;
case 5:
setTransform('rotateZ(90deg) rotateX(180deg)');
if (width > height) {
parent.css('height', width + 'px');
element.css('margin-top', ((width -height) / 2) + 'px');
}
break;
case 6:
setTransform('rotate(90deg)');
if (width > height) {
parent.css('height', width + 'px');
element.css('margin-top', ((width -height) / 2) + 'px');
}
break;
case 7:
setTransform('rotateZ(90deg) rotateY(180deg)');
if (width > height) {
parent.css('height', width + 'px');
element.css('margin-top', ((width -height) / 2) + 'px');
}
break;
case 8:
setTransform('rotate(-90deg)');
if (width > height) {
parent.css('height', width + 'px');
element.css('margin-top', ((width -height) / 2) + 'px');
}
break;
}
}
});
});
}
};
});
用户错误。我在 HTML 中的指令属性名称中有错字。 是:img-fix-orientation 应该是:img-orientation (脸掌)
忘了我在某个时候给它重命名了。 该指令似乎有效。