从JavaScript中的EXIF数据中提取GPS数据

Extract GPS data from EXIF data in JavaScript

本文关键字:数据 GPS 提取 EXIF JavaScript 中的      更新时间:2023-09-26

我想使用NodeJS从图片中提取GPS Exif标签。我得到了这种格式的数据:

{
    "gps": {
        "GPSTimeStamp": [2147483647, 76, 41],
        "GPSLongitude": [76, 41, 56.622],
        "GPSLatitude": [30, 43, 8.754],
        "GPSAltitude": 0,
        "GPSDateStamp": "14615748802"
    }
}

有没有办法将其转换为纬度和经度?

当我在Android中检查Exif数据时,它向我显示了正确的纬度和经度,但是在NodeJS中,我正在获取这种格式的数据。

哦,我只是知道了数字,分钟,秒和方向的概念。我在数组中得到了三个值,分别是数字、分钟和秒

要解析您的输入,请使用以下命令。

function ParseDMS(input) {
    var parts = input.split(/[^'d'w]+/);
    var lat = ConvertDMSToDD(parts[0], parts[1], parts[2], parts[3]);
    var lng = ConvertDMSToDD(parts[4], parts[5], parts[6], parts[7]);
}

以下内容将把您的 DMS 转换为 DD

function ConvertDMSToDD(degrees, minutes, seconds, direction) {
    var dd = degrees + minutes/60 + seconds/(60*60);
    if (direction == "S" || direction == "W") {
        dd = dd * -1;
    } // Don't do anything for N or E
    return dd;
}

因此,您的输入将产生以下内容:

36°57'9" N = 36.9525000
110°4'21" W = -110.0725000
我知道

这可能已经解决了,但我想为偶然发现这个问题的人提供替代解决方案。

似乎您正在使用一些 Node.js 库来为您提供这些原始经度/经度数据,由您来转换它们。有一个新的库 exifr 可以自动为您执行此操作。它是维护的,积极开发的库,专注于性能,并在nodejs和浏览器中工作。

    async function getExif() {
        let output = await exifr.parse(imgBuffer)
        console.log('gps', output.latitude, output.longitude)
    }

您还可以尝试图书馆的游乐场并尝试图像及其输出,或查看存储库和文档。