我需要访问页面上已加载的图像中的EXIF数据.说,从浏览器扩展. AFAIU,有一些JavaScript方法可以完成任务:
>使用JavaScript-Load-Image;
>使用Nihologic EXIF manipulation library;
>在画布上绘制图像.
前两种方法可能处理本地文件,或者需要对服务器执行附加(在这种情况下为多余)请求以检索二进制数据.后者可能起作用:
var canvas = document.createElement("canvas");
canvas.width = oImg.width;
canvas.height = oImg.height;
// Copy the image contents to the canvas
var ctx = canvas.getContext("2d");
ctx.drawImage(oImg, 0, 0);
// Get the data-URL formatted image
var dataURL = window.atob(canvas.toDataURL("image/jpeg", 1.0).split(',')[1]);
但是生成的二进制对象不包含EXIF数据(0xE1标记),似乎在画布上绘制后,它会产生JFIF(0xE0)标记.
因此,我的问题是:是否可以访问页面上已加载图像的二进制数据?
请注意:SO上已经有similar questions,但是没有人回答如何不重新加载图像并获得对EXIF数据的访问权的问题.
我知道我可以将映像本地保存到本地存储中,然后使用上述库,但这看起来有些过头了.
解决方法:
Is it possible to get an access to binary data of already loaded image on the page?
不,很遗憾,这是不可能的,不是从用于图像的原始二进制文件数据中得出的.图像处理后,原始二进制数据将被丢弃.
图像加载过程是一个完全独立的过程,根本不涉及画布-这里的画布是无辜的!