我有一个程序,其中设置相机以不断拍照(大约每10秒钟左右),图片被发送到我服务器上的文件夹,然后另一个程序不断刷新该文件夹,以便我总是只有该特定文件夹中的最新图片。
存在一个不断刷新的HTML文档,并引用该图片位置以获取并显示最新图像。
我要做的是提取EXIF数据(当我从活动网页保存图像并查看其属性时,我已验证存在)。我想显示 DateCreated (我相信这是 DateTime )和纬度和经度(我相信是 GPSLatitude 和 GPSLongitude )。
我遇到了这个库,exif-js,这似乎是大多数人在JavaScript中尝试做同样事情的首选。我的代码与 README.md 文件底部的代码相同,只是我更改了 img id =“....” < / strong>和变量名称,(见下文)。它似乎应该工作,但它不会产生任何数据。我的空 span元素只是空着。
刷新前页面的时间跨度是否存在问题?
感谢您的帮助!
这是我的代码目前的样子(只是试图获取DateTime信息)。我也尝试了GPSLatitude和GPSLongitude标签。
<!-- Library to extract EXIF data -->
<script src="vendors/exif-js/exif-js"></script>
<script type="text/javascript">
window.onload=getExif;
function getExif()
{
var img1 = document.getElementById("img1");
EXIF.getData(img1, function() {
var time = EXIF.getTag(this, "DateTime");
var img1Time = document.getElementById("img1Time");
img1Time.innerHTML = `${time}`;
});
var img2 = document.getElementById("img2");
EXIF.getData(img2, function() {
var allMetaData = EXIF.getALLTags(this);
var allMetaDataSpan = document.getElementById("Img2Time");
allMetaDataSpan.innerHTML = JSON.stringify(allMetaData, null, "\t");
});
}
</script>
答案 0 :(得分:0)
进入你的exif.js文件,然后转到第930行,然后将其更改为
EXIF.getData = function(img, callback) {
if ((self.Image && img instanceof self.Image
|| self.HTMLImageElement && img instanceof self.HTMLImageElement)
&& !img.complete)
return false;
答案 1 :(得分:0)
我知道这可能已经解决了,但我想为人们在这个问题上绊脚石提供另一种解决方案。
我是您可能想尝试的新库exifr的开发人员。它是维护,积极开发的,注重性能的库,可在nodejs和浏览器中使用。
async function getExif() {
let output = await exifr.parse(imgBuffer)
console.log('latitude', output.latitude) // converted by the library
console.log('longitude', output.longitude) // converted by the library
console.log('GPSLatitude', output.GPSLatitude) // raw value
console.log('GPSLongitude', output.GPSLongitude) // raw value
console.log('GPSDateStamp', output.GPSDateStamp)
console.log('DateTimeOriginal', output.DateTimeOriginal)
console.log('DateTimeDigitized', output.DateTimeDigitized)
console.log('ModifyDate', output.ModifyDate)
}
您还可以尝试使用库中的playground并尝试图像及其输出,或者检查repository and docs。