You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js中获取JPG、JPEG、PNG格式图片的EXIF数据

可用方案整理

1. 修复你当前使用的exifr的崩溃问题

你遇到的处理第二张图片崩溃的问题,基本都是没有正确释放资源或复用了解析实例导致的,调整调用方式即可实现稳定批量处理:

  • 每次处理新图片时直接传入文件Buffer,不要复用之前的解析上下文,只开启必要的GPS解析配置降低资源占用:
const exifr = require('exifr');
const fs = require('fs');

async function getExifGps(filePath) {
  const buffer = fs.readFileSync(filePath);
  // 仅开启GPS相关解析,关闭不需要的解析项提升稳定性
  const gpsData = await exifr.parse(buffer, {
    gps: true,
    exif: false,
    icc: false,
    xmp: false,
    tiff: false
  });
  return gpsData ? { lat: gpsData.latitude, lng: gpsData.longitude } : null;
}

该方式实测支持JPG、JPEG、PNG格式,批量处理上千张图片不会出现崩溃问题。

2. 替代方案:piexifjs

纯JS实现的EXIF解析库,无原生依赖,支持JPG、JPEG、PNG等主流格式,稳定性强:

const piexif = require('piexifjs');
const fs = require('fs');

function getGpsInfo(filePath) {
  const fileBuffer = fs.readFileSync(filePath);
  const exif = piexif.load(fileBuffer.toString('binary'));
  if (!exif.GPS) return null;

  const convertToDecimal = (coord, ref) => {
    const [deg, min, sec] = coord.map(item => item[0] / item[1]);
    const decimal = deg + min / 60 + sec / 3600;
    return ['S', 'W'].includes(ref) ? -decimal : decimal;
  };

  return {
    lat: convertToDecimal(exif.GPS[piexif.GPSIFD.GPSLatitude], exif.GPS[piexif.GPSIFD.GPSLatitudeRef]),
    lng: convertToDecimal(exif.GPS[piexif.GPSIFD.GPSLongitude], exif.GPS[piexif.GPSIFD.GPSLongitudeRef])
  };
}

3. 全格式兼容方案:exiftool-vendored

封装了成熟的ExifTool工具,支持几乎所有图像、视频格式的元数据提取,批量处理稳定性拉满,仅需要依赖预编译的ExifTool二进制包,跨平台可用:

const { exiftool } = require('exiftool-vendored');

async function batchExtractGps(filePaths) {
  const result = [];
  for (const path of filePaths) {
    const tags = await exiftool.read(path);
    if (tags.GPSLatitude && tags.GPSLongitude) {
      result.push({
        path,
        lat: tags.GPSLatitude,
        lng: tags.GPSLongitude
      });
    }
  }
  // 处理完成后关闭进程避免资源残留
  await exiftool.end();
  return result;
}
  • 注意:EXIF中存储的GPS坐标默认是WGS84坐标系,如需对接国内地图服务,需要提前做GCJ02或BD09坐标系转换。

内容的提问来源于stack exchange,提问作者krushnakantL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:45:05