是否可以使用 ng-file-upload 读取图像的地理位置?
Is it possible to read the geolocation of images using ng-file-upload?
我想知道,是否可以使用 ng-file-upload 库读取附加到图像文件的 Exif 元数据来读取地理定位。
有些选项(例如 ngf-fix-orientation)利用了 Exif 对象的元数据。但是,选择文件后,它不再包含任何exif信息。
我试过了:
ngf-before-model-change="beforeChange($files)"
与:
$scope.beforeChange = function(files){ console.log('BeforeChangefiles', files); };
结果如下:
0: File name: "IMG_5277.JPG" lastModified: 1559123113000 lastModifiedDate: Wed May 29 2019 11:45:13 GMT+0200 (Mitteleuropäische Sommerzeit) {} webkitRelativePath: "" size: 3741545 type: "image/jpeg" $ngfBlobUrl: "blob:http://localhost/630d0c34-07a1-4f41-81fd-e2cf021cbf65" $ngfWidth: 4032 $ngfHeight: 3024
此时 Exif 信息似乎已经丢失。
是否有可能在丢失之前访问 exif 信息?
如果不是,建议采用哪些解决方法?
图书馆似乎无法检索您的 EXIF 元数据。有很多未解决的问题,但通常应该支持它 (this one for example)。
您可以尝试使用 exif-js
在对图像进行进一步处理之前检索图像的 EXIF 元数据:
EXIF.getData(yourImg, function() {
var allMetaData = EXIF.getAllTags(this);
var allMetaDataSpan = document.getElementById("allMetaDataSpan");
allMetaDataSpan.innerHTML = JSON.stringify(allMetaData, null, "\t");
});
JPEG 可能包含嵌入的 EXIF 片段,其中可能包含 GPS 坐标。它们很容易提取。虽然我不推荐 exif-js,因为它多年来一直没有维护,有没有人响应的错误和堆积问题。
我会推荐 exifr,它也可以很好地将 GPS 转换为简单值(原始形式存储在 4 个单独的标签中)
// fancy async syntax
let {latitude, longitude} = await exifr.gps('./myimage.jpg')
// older promise syntax
exifr.gps(arrayBuffer).then(gps => {
console.log(gps.latitude, gps.longitude)
})
输入可以是任何东西。 URL、ArrayBuffer、Blob 等...
我想知道,是否可以使用 ng-file-upload 库读取附加到图像文件的 Exif 元数据来读取地理定位。
有些选项(例如 ngf-fix-orientation)利用了 Exif 对象的元数据。但是,选择文件后,它不再包含任何exif信息。
我试过了:
ngf-before-model-change="beforeChange($files)"
与:
$scope.beforeChange = function(files){ console.log('BeforeChangefiles', files); };
结果如下:
0: File name: "IMG_5277.JPG" lastModified: 1559123113000 lastModifiedDate: Wed May 29 2019 11:45:13 GMT+0200 (Mitteleuropäische Sommerzeit) {} webkitRelativePath: "" size: 3741545 type: "image/jpeg" $ngfBlobUrl: "blob:http://localhost/630d0c34-07a1-4f41-81fd-e2cf021cbf65" $ngfWidth: 4032 $ngfHeight: 3024
此时 Exif 信息似乎已经丢失。
是否有可能在丢失之前访问 exif 信息?
如果不是,建议采用哪些解决方法?
图书馆似乎无法检索您的 EXIF 元数据。有很多未解决的问题,但通常应该支持它 (this one for example)。
您可以尝试使用 exif-js
在对图像进行进一步处理之前检索图像的 EXIF 元数据:
EXIF.getData(yourImg, function() {
var allMetaData = EXIF.getAllTags(this);
var allMetaDataSpan = document.getElementById("allMetaDataSpan");
allMetaDataSpan.innerHTML = JSON.stringify(allMetaData, null, "\t");
});
JPEG 可能包含嵌入的 EXIF 片段,其中可能包含 GPS 坐标。它们很容易提取。虽然我不推荐 exif-js,因为它多年来一直没有维护,有没有人响应的错误和堆积问题。
我会推荐 exifr,它也可以很好地将 GPS 转换为简单值(原始形式存储在 4 个单独的标签中)
// fancy async syntax
let {latitude, longitude} = await exifr.gps('./myimage.jpg')
// older promise syntax
exifr.gps(arrayBuffer).then(gps => {
console.log(gps.latitude, gps.longitude)
})
输入可以是任何东西。 URL、ArrayBuffer、Blob 等...