【问题标题】:How to apply EXIF orientation如何应用 EXIF 方向
【发布时间】:2015-02-19 07:57:51
【问题描述】:

我注意到并不是每个浏览器都应用 EXIF 方向。

我的手机上的 Chrome 不应用 EXIF 方向,但 Safari 手机可以。

那么既然不是标准的,如何在Safari上不应用两次就应用EXIF方向呢?

我还想知道是否可以在客户端应用方向,这样我就不必在服务器端之后再这样做(不仅仅是 javascript 中的图像旋转)。

function handleFileSelect(evt) {

var previewContainer = evt.data.previewContrainer;

evt.stopPropagation();
evt.preventDefault();

var files;
if (evt.target.files) {
    files = evt.target.files // FileList object
}
else if (evt.originalEvent.dataTransfer.files) {
    files = evt.originalEvent.dataTransfer.files
}

//if there's a file
if (files) {

    // Loop through the FileList and render image files as thumbnails.
    for (var i = 0, f; f = files[i]; i++) {
        var orientation = 0;

        // Only process image files.
        if (!f.type.match('image.*')) {
            continue;
        }

        //EXIF.getData(f, function () {
        //    orientation = EXIF.getTag(this, "Orientation");
        //    alert(orientation);
        //    alert(EXIF.pretty(this));
        //});

        createReader(f, previewContainer);

    }
}
}

【问题讨论】:

  • 也许this question 会有所帮助。编辑:this one 也不错。
  • 我不确定我是否理解答案。我已经有了 EXIF 方向,但是如何编辑图片以应用方向
  • 您可以使用 css rotation 属性并使用 javascript 有条件地应用它
  • 我已经这样做了,但是由于 safari 尊重 EXIF 方向,所以它将是一个双重方向。

标签: javascript jquery html exif


【解决方案1】:

为了确保图像无论浏览器和 exif 方向如何都能正确显示,您需要使用 javascript 来进行旋转并将图像放在画布上。这可以保护它免受原生支持旋转的“双重旋转”,例如野生动物园。

我使用来自 github 的 JavaScript-Load-Image 项目解决了这个问题,这很容易;在这里查看我的答案:JS Client-Side Exif Orientation: Rotate and Mirror JPEG Images

【讨论】:

  • 好主意!当用户在 safari 上时,我设法通过硬编码来做到这一点,女巫并不好......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-08
  • 2017-06-02
  • 2018-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多