node-exif:一个 npm 包,把照片里隐藏的 6 类元数据全部读出来
发布时间:2026/8/28 8:56:49 作者:尧图编辑部 阅读量:1,286

node-exif一个 npm 包把照片里隐藏的 6 类元数据全部读出来【免费下载链接】transformers Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.项目地址: https://gitcode.com/GitHub_Trending/tra/transformers相册里堆了几万张照片按文件名根本搜不到那年在青岛拍的海手机拍的竖照发到网页上横着躺怎么摆都没法看。这些问题的答案其实就藏在文件内部——Exif 是相机写进 JPEG 的履历档案记录了拍摄设备、参数、位置和时间。node-exifnpm 包名 exif就是这个档案的翻译器在 Node.js 里读入一张 JPEG它把隐藏的元数据原样翻成可读对象。它到底能读出什么解析结果是 6 组字段各管一摊字段组内容典型用途image相机品牌与型号、分辨率、方向、后期软件、版权建设备档案thumbnail内嵌缩略图在文件中的位置与长度快速生成列表缩略图exif光圈、快门、ISO、焦距、原始拍摄时间参数统计与筛选gps经纬度、GPS 日期与时间地理定位、足迹地图interoperability版本与兼容信息兼容性校验makernote厂商私有扩展相机厂商私藏的补充参数深度参数挖掘各品牌私有参数如索尼的镜头型号、佳能的镜头结构就藏在 makernote 里node-exif 内置了 AGFA、Epson、富士、奥林巴斯、松下、三洋 6 家的解析逻辑源码放在 lib/exif/makernotes/ 目录下。安装与三种调用方式npm install exif装好后有三种拿数据的方式传文件路径new ExifImage({ image: a.jpg }, cb)适合本地批量扫描目录传 Buffer把image换成内存中的字节流适合处理用户刚上传、还没落盘的照片实例复用先实例化再用exif.loadImage(path, cb)反复加载一个实例吃下整个文件夹省掉重复初始化的开销。前两种是回调风格解析完成或出错都会通过 cb 回来错误里带可读的 message。一行代码读出相机参数顺手做照片方向校正最小示例var ExifImage require(exif).ExifImage; new ExifImage({ image: photo.jpg }, function (error, exifData) { if (error) console.log(Error: error.message); else console.log(exifData.image.Model, exifData.exif.FNumber); });exifData.image.Model是相机型号exifData.exif.FNumber是光圈值。把这段逻辑套在目录遍历里Node.js 读取照片参数就能批量落成 CSV 或数据库字段。照片方向校正 是另一个高频需求Orientation 字段记录这张照片该往哪个方向看1 表示正常6 表示顺时针转 90°8 表示逆时针转 90°。流程是读出数值 → 按规则旋转 → 存一份已校正的副本。像素没动过朝向全靠它描述网页横竖错乱基本都出在这里。从解析到应用进阶玩法有了坐标和时间的组合玩法就打开了把经纬度打点聚类旅行足迹地图就出来了按 GPS 时间戳排序能自动还原拍摄顺序再挂一个逆地理编码服务坐标就能变成拍摄于青岛这样的标签。想抠更细的参数就去看 makernote——内置 6 家厂商之外索尼部分机型也可能只解析出部分字段这是正常现象。解析不可信来源的图片时建议用maxEntries选项限制解析条目数防止异常构造的超大结构拖垮服务fixThumbnailOffset选项可以修正缩略图偏移配合 thumbnail 组字段直接裁出内嵌缩略图。核心解析逻辑都在 lib/exif/ExifImage.js 里选项清单可对照 README.md 查。常见问题 QPNG 为什么解析不出东西AExif 容器实际只有 JPEG 携带处理前先按扩展名和文件头过滤别把精力浪费在注定为空的格式上。Q某张图 makernote 报错了其他字段还能用吗A能。厂商私有格式不受支持时只影响这一段image、exif、gps 等其余组照常返回做容错即可。Q为什么有的字段拿到的是 BufferAExifVersion、ColorSpace这类按原始字节返回展示或入库前记得转成字符串或数值。Q时间字段长什么样ADateTimeOriginal是YYYY:MM:DD HH:MM:SS冒号分隔日期入库前转成标准时间格式否则排序和范围查询都会翻车。把照片从一堆像素变成一行行可查询的数据就是 node-exif 干的事参数能检索、方向能校正、足迹能回溯。下一版如果你需要再考虑把它接到你的图片服务里先让照片自己把历史讲清楚。【免费下载链接】transformers Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.项目地址: https://gitcode.com/GitHub_Trending/tra/transformers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考