提取图像方向Javascript

时间:2018-05-01 06:18:15

标签: javascript exif

在处理基于Web的项目时,我无法修复从某些设备捕获的图像的方向。我发现方向(以及一堆其他图像元数据)可作为图像exif的一部分使用,也可以进行解析。经过一段谷歌搜索后,我找到了以下功能,从图像中提取方向,并使用该信息,我可以在浏览器上显示时更正方向。我无法理解下面的代码片段。我遇到的第一个障碍是在试图找出DataViewgetUint16的目的。我浏览了MDN文档,但这对我没什么帮助。谁能帮我理解这个?甚至指向相关资源的指针也会非常有用。

 function getOrientation(file, callback) {
      var reader = new FileReader();
      reader.onload = function(e) {

        var view = new DataView(e.target.result);
        if (view.getUint16(0, false) != 0xFFD8) return callback(-2);
        var length = view.byteLength, offset = 2;
        while (offset < length) {
          var marker = view.getUint16(offset, false);
          offset += 2;
          if (marker == 0xFFE1) {
            if (view.getUint32(offset += 2, false) != 0x45786966) return callback(-1);
            var little = view.getUint16(offset += 6, false) == 0x4949;
            offset += view.getUint32(offset + 4, little);
            var tags = view.getUint16(offset, little);
            offset += 2;
            for (var i = 0; i < tags; i++)
              if (view.getUint16(offset + (i * 12), little) == 0x0112)
                return callback(view.getUint16(offset + (i * 12) + 8, little));
          }
          else if ((marker & 0xFF00) != 0xFF00) break;
          else offset += view.getUint16(offset, false);
        }
        return callback(-1);
      };
      reader.readAsArrayBuffer(file);
    }

0 个答案:

没有答案