7

在正确旋转上传之前渲染图像时,我遇到了 JavaScript 问题。似乎当您渲染图像时,仅在 exif 数据上具有正确的旋转,浏览器不使用它。

当图像通过 JavaScript 在网站上显示时,用户会看到他们系统上的内容之间的不同轮换。

代码非常基本:

你知道纠正这个旋转错误的简单方法吗?

LbEmeraude.handleImage = function (f) {
    if (f.type.match('image.*')) {
        var reader = new FileReader();
        reader.onload = (function (file) {
            return function (e) {
                var image = {};
                image.dataAsUrl = e.target.result;
                LbEmeraude.renderImage(image);
            };
        })(f);
        var image = reader.readAsDataURL(f);
    }
}

LbEmeraude.renderImage = function (image) {

    var eImage = LbEmeraude.createImgElement(image.dataAsUrl);
    $('someElement').append(eImage);

};

LbEmeraude.createImgElement = function (src) {
    var image = document.createElement("img");
    image.src = src;
    return image;
}

感谢您的关注。

4

1 回答 1

2

你所要求的并不是什么新鲜事......看看这个:https ://bugzilla.mozilla.org/show_bug.cgi?id=298619

那个吸盘是在 2005 年打开的,还没有解决。这篇文章很旧但确实很强大:http ://www.daveperrett.com/articles/2012/07/28/exif-orientation-handling-is-a-ghetto/

但是其中的关键部分有点远,他指出浏览器通常不会在 html img 标签的上下文中应用 exif 旋转,但在自己的选项卡中打开图像时可能会尊重它。

所以现在没有浏览器默认会这样做,似乎这样做的网络应用程序主要是在服务器上获取该值并提供不同的资产。

但是,如果您想破解它似乎有希望:Accessing JPEG EXIF rotation data in JavaScript on the client side

于 2013-10-01T05:13:26.770 回答