在JavaScript中从img读取EXIF数据(跨域友好)
Read EXIF data from img in JavaScript (cross-domain friendly)
>我最近开始构建一个书签,显示网站上任何图像的EXIF数据。我选择使用Nihilogic的二进制.js和exif.js库。对于与父页面托管在同一域上的图像,该脚本效果很好。但是因为它使用 XHR 来读取图像的二进制数据,并且由于 XHR 仅限于同源请求,所以我无法访问任何跨站点托管图像的二进制数据。
有没有办法在本地(或至少不使用XHR)加载图像的二进制数据以保留EXIF数据?
我已经探索了其他几个方向,但我担心我不够了解它们,无法确定是否有解决方案:
- JSONP - 我假设没有办法将二进制数据放入这些东西之一。
- canvas 标签 - 这些似乎产生的 base64 编码与 PHP 的编码非常不同,我怀疑 EXIF 数据不再存在于新编码中。
Javascript 被允许对同源图像和启用 cors 的图像执行特殊操作(如在画布上),因为浏览器可以安全地假设这些图像可以首先上传到服务器。但随后它变得复杂...
我无法访问任何跨站点托管图像的二进制数据。
是的,一般来说,你不能是非常重要的。更重要的是,你不能用书签做你想做的事。
你不能用画布做到这一点,因为这里的cors规则是严格的(有充分的理由!
简而言之,总体推理几乎完全相同。浏览器处于独特的安全地位:互联网上的随机页面可以向您显示对您来说是私有的内容,例如假设的图像C:''MyPhotos''privateImage1.jpg,假设它可以猜测该文件路径。
但是,除了向您显示该文件之外,该网页肯定不允许对该文件执行任何操作。它无法读取二进制信息(EXIF 信息或像素信息)。JavaScript不允许知道该图像的外观或与之相关的几乎任何数据。
如果它能够弄清楚这一点,一个随机网页将能够尝试一堆文件路径,并可能在硬盘驱动器上遇到一个图像,然后将该图像的二进制数据上传到服务器,实际上窃取了您的私有图像。
因此,浏览器扩展将比(JavaScript)书签更适合此任务。
纯粹来自客户?我怀疑。XHRing一个运行类似exif_imagetype()
的本地PHP脚本怎么样?此功能适用于远程和图像。
- 如何在iOS应用程序中从Firebase中删除超过6小时的数据
- 如何在corona sdk中从CK编辑器中检索数据
- 如何从另一个序列或数据中获取值
- 停止JSON.parse()从JSON字符串数据中删除尾随零
- 如何在javascript中从对象内部的数组中获取数据
- Firebase:如何从存在特定密钥的数据中检索记录
- 如何在Calendario中从JSON设置数据
- 如何在公共js模块中从web服务返回数据
- 如何在控制器代码点火器中从 ajax 获取数据
- 如何在node.js中从mongodb推送请求的数据
- 如何在 AngularJS 中从 API 访问数组数据
- 从JavaScript中的EXIF数据中提取GPS数据
- 从 HTML 页面中的第三方响应数据中获取单个值
- 尝试在移动优先应用程序中从 SQL 数据库获取数据时出错
- 如何从jQuery中Ajax调用返回的数据中获取对象
- 从JSON数据中获取图像源
- d3在鼠标悬停上过滤数据之后从选择中提取值
- 从Node.js中的JSON数据中提取JSON字段
- 如何确保我的谷歌图表数据在Javascript中从内存中删除
- 如何从加载到javascript中的导出XML数据中删除不需要的空格