尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

3分钟上手node-exif:Node.js提取图片Exif数据的快速入门教程

3分钟上手node-exif:Node.js提取图片Exif数据的快速入门教程 3分钟上手node-exifNode.js提取图片Exif数据的快速入门教程【免费下载链接】node-exifA node.js library to extract Exif metadata from images.项目地址: https://gitcode.com/gh_mirrors/no/node-exifnode-exif是一个轻量的 Node.js 库npm 包名exif只需几行代码就能从 JPEG 图片中提取 Exif 元数据相机型号、拍摄时间、光圈快门、GPS 位置等信息全部自动解析为结构化对象。无需调用外部程序纯 JavaScript 实现是开发者处理图片元信息的简单选择。什么是 Exif为什么要在 Node.js 里读取它ExifExchangeable Image File Format可交换图像格式是数码相机和扫描仪写在 JPEG 文件里的隐藏信息。一张照片看似只有画面实际上里面还可能藏着拍摄设备品牌Make、型号Model⏰拍摄时间原始拍摄时间DateTimeOriginal拍摄参数光圈、快门速度、ISO、焦距地理位置GPS 经纬度如果相机开启了定位️图片信息方向、分辨率、嵌入的缩略图对做图片网站、相册管理、内容审核、地图服务的开发者来说批量提取图片 Exif 数据是一个高频需求。node-exif 正是为此而生——它把繁琐的二进制 TIFF 解析过程封装成一个简单对象你只管拿结果。node-exif 能提取哪 6 类 Exif 数据node-exif 的解析结果exifData是一个对象内部按 Exif 标准的 IFD信息点目录划分为 6 个子对象定义在 lib/exif/ExifImage.js 中字段对应 IFD内容说明imageIFD0主图信息品牌、型号、方向、分辨率thumbnailIFD1嵌入缩略图的位置与大小exifExif IFD相机参数光圈、ISO、拍摄时间、焦距gpsGPS IFD拍摄地点的经纬度信息interoperabilityInterop IFD互操作性信息makernoteMakernote厂商私有信息富士、奥林巴斯、松下、AGFA、爱普生、三洋等不同品牌相机的私有信息Makernote格式各异node-exif 在 lib/exif/makernotes/ 目录下为多个品牌提供了独立解析模块例如 fujifilm.js、olympus.js、panasonic.js。最快安装方法一行 npm 命令先确保本机已安装 Node.js然后在项目目录执行npm install exif不想用 npm 也可以直接获取源码放到项目的~/.node_libraries目录下使用。安装完成后整个库对外只暴露一个ExifImage类入口见 lib/exif/index.js。快速体验3 行代码提取全部 Exif 信息使用方式极其简单——把图片扔给它即可。下面是最小示例var ExifImage require(exif).ExifImage; new ExifImage({ image: myImage.jpg }, function (error, exifData) { if (error) console.log(Error: error.message); else console.log(exifData); // 拿到所有 Exif 数据 });两个小技巧可以直接传文件路径也可以传 Buffer比如从 HTTP 上传中拿到的数据无需先落盘除了图片还支持maxEntries、tiffOffsets等可选参数用于控制解析深度和开关偏移量信息。真实输出长什么样用测试目录里的 test/sony-alpha-6000.jpg一台索尼 A6000 拍的照片跑一遍能提取出的关键信息包括Make: SONY Model: ILCE-6000 DateTimeOriginal: 2014:04:18 20:33:53 ExifImageWidth/Height: 6000 x 4000 FNumber: 8 光圈 f/8 ISO: 100 FocalLength: 22 焦距 22mm LensModel: E PZ 16-50mm F3.5-5.6 OSS完整的 JSON 结果可以参考 test/sony-alpha-6000.jpg.json。每张测试图片旁都放了一个同名.json文件记录了对应的期望输出是很好的对照资料。常见 Exif 字段速查表拿到exifData后最常用的字段都在这两张表里image主图信息字段含义Make/Model相机品牌 / 型号Orientation图片方向1 为正常6 为旋转 90°ModifyDate文件修改时间Software生成软件exif相机参数字段含义FNumber光圈值ExposureTime曝光时间ISO感光度FocalLength焦距mmDateTimeOriginal原始拍摄时间Flash闪光灯状态更全面的字段含义可查阅 Exif 标准文档或 exiftool 的字段列表见 README。错误处理与注意事项图片没有 Exif 时各子对象为空对象如gps: {}不会报错例如 test/right.jpg.json 就只提取到了方向信息Makernote 格式不识别时makernote中会返回一条error提示如索尼部分机型的私有格式其余数据不受影响文件不存在等异常通过回调的error参数返回建议始终先判断 error。库内部对解析深度有默认上限DEFAULT_MAX_ENTRIES 128防止恶意构造的图片导致超长解析安全性方面可以考虑。验证安装跑一遍官方测试项目自带基于 mocha 的测试套件覆盖多品牌 Makernote、异常图片等场景npm test测试图片与期望结果都放在 test/ 目录例如 test/api-test.js 是 API 层测试入口。如果你只想快速验证自己的环境跑通这个测试套件是最省事的办法。小结node-exif 把提取图片 Exif 数据这件复杂事压缩成了一次对象实例化 一个回调支持文件路径和 Buffer 两种输入6 大 IFD 数据结构化输出多品牌 Makernote 开箱即用依赖极少仅debug纯 JS 实现适合嵌入任何 Node.js 图片处理流水线。下一步可以翻看 README.md 了解 CLI 用法社区提供了 exif-cli 命令行工具或在 lib/exif/ExifImage.js 中深入研读解析逻辑。【免费下载链接】node-exifA node.js library to extract Exif metadata from images.项目地址: https://gitcode.com/gh_mirrors/no/node-exif创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表