javascript - FileReader readAsBinaryString() 到图像 DOM 元素

标签 javascript html file-upload filereader

如果有输入类型文件

<input id="file" type="file" name="file" />

和图像

<img id="img">

如果选择了一个文件,我想从图像中读取 Exif 数据并将其加载到 img 标签中。

var $inputFile = $("#file");

$inputFile.on("change", function() {
    var img = document.getElementById("img");
    var files = $inputFile[0].files;

    var reader = new FileReader()

    reader.onload = function(event) {
        var file = reader.result;

        // this is not working
        img.src = file;

        var binaryString = reader.result;
        var oFile = new BinaryFile(binaryString, 0, file.size);
        var exif  = EXIF.readFromBinaryFile(oFile);

        // read exif data
    }
    reader.readAsBinaryString(files[0]);
});

问题是我在屏幕上没有看到任何图像。仅当我使用 reader.readAsDataURL(files[0]); 时它才会显示但这我不能使用,因为我需要 Exif 数据的binaryString。

如何获取图像标签来显示所选文件(二进制字符串)?

最佳答案

要以“二进制”形式显示图像,您需要将其作为 Base62 编码字符串,即“dataURL”。 要使用它的二进制文件并将其作为 src,您可以创建 ObjectURL .

var objectURL = URL.createObjectURL(blob);
image.src=objectURL;

为此,您不需要 fileReader,但您需要 fileReader 来进行 exif 分析

关于javascript - FileReader readAsBinaryString() 到图像 DOM 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21076031/

相关文章:

javascript - 将矩形形状的移动叠加层添加到 html5 视频

android - webkit 栅格与矢量图像

php - 在单个页面上使用 PHP、AJAX 和 jQuery 的多个上传表单不起作用

php - 多个文件上传不将每个路径保存在数据库中

javascript - 如何突出显示分布在多个标签上的句子

javascript - 如何以编程方式禁用 chrome 开发人员工具中的 javascript?

javascript - 如何随机选择一个数组?

javascript - 为什么JS在给数字添加对象时会调用 `toString`方法

php - Chrome、Firefox 和 Internet Explorer 中的 Ajax 和 html 事件

c# - 从客户端调用 MVC Web API Controller 方法