为了账号安全,请及时绑定邮箱和手机立即绑定

EXIF.js获取图片信息

EXIF.js获取图片信息

浮云间 2019-02-06 14:16:20
问题描述使用exif.js来获取图片的方向信息报错了,有的图片出现的下面的错误,有的图片能过够获取到图片的方向信息相关代码// 请把代码文本粘贴到下方(请勿用图片代替代码)        EXIF.getData(element, function () {            var direction = EXIF.getTag(this, 'Orientation');             PictureCompression(element, index, direction); // 图片压缩的函数         })关注 | 2收藏
查看完整描述

1 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

是EXIF.js库本身的问题,在解析分辨率大于600dpi的图片时就会出现这个问题,到目前为止还没有解决,看这里。如果只是想获取图片的方向的话,可以使用以下代码:

getOrientation = function (file, callback) {    var reader = new window.FileReader();
    reader.onload = function (e) {        var view = new window.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);
}


查看完整回答
反对 回复 2019-02-21
  • 1 回答
  • 0 关注
  • 608 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信