7

正しい回転でアップロードする前に画像をレンダリングするときに JavaScript に問題があります。画像ウィッチをレンダリングすると、exif データでのみ正しい回転が行われ、ブラウザはそれを使用しないようです。

JavaScript によって Web サイトに画像が表示されると、システム上にあるものとは異なる回転がユーザーに表示されます。

コードは非常に基本的です。

この回転バグを修正する簡単な方法を知っていますか?

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 ローテーションを適用しないが、独自のタブで画像を開くときにそれを尊重する可能性があると彼が指摘するところです。

そのため、現在のところ、デフォルトでこれを実行するブラウザはありません。これを実行しているように見える Web アプリは、ほとんどの場合、サーバー上でその値を取得し、さまざまなアセットを提供しています。

しかし、ハッキングしたい場合は希望があるようです:クライアント側の JavaScript で JPEG EXIF 回転データにアクセスする

于 2013-10-01T05:13:26.770 に答える