ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

5 分钟上手 node-exif:一张 JPEG 里藏了多少照片信息?

5 分钟上手 node-exif:一张 JPEG 里藏了多少照片信息? 5 分钟上手 node-exif一张 JPEG 里藏了多少照片信息【免费下载链接】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相册里那张照片你大概率说不清它是哪台相机拍的、光圈快门用了多少——这些信息其实一直都在只是被写进了 JPEG 文件的暗格里也就是Exif 元数据。node-exifnpm 包名exif就是专门打开这个暗格的轻量库传入一张 JPEG回调里直接拿到相机型号、光圈、快门、ISO、焦距、GPS 坐标和方向标记。适合谁想给照片库建参数索引的 Node.js 开发者需要自动做照片方向校正的图片服务维护者想按 GPS 坐标还原旅行时间线的人库很轻零配置回调风格 API上手成本约等于一次npm install。三步跑起来第一步装包。一条命令没有其他依赖要操心。第二步跑最小示例。下面这段是全文唯一的代码挑一张带 Exif 的 JPEG 直接解析拿到拍摄参数后打印关键几项const { ExifImage } require(exif); new ExifImage({ image: photo.jpg }, (err, data) { if (err) { console.error(err.message); return; } console.log(data.image.Make); // 相机品牌型号 console.log(data.exif.ISOSpeedRatings); // ISO console.log(data.exif.FNumber); // 光圈 console.log(data.exif.ExposureTime); // 快门 });第三步看输出。解析结果是一个对象顶层分 6 大块每块下面是一组字段名 → 值的键值对比如image.Make是相机品牌型号、exif.FNumber是光圈。一次解析能拿到什么6 大类数据一次给齐数据类别字段里面有什么图片信息image相机品牌型号、方向、分辨率、软件、版权缩略图thumbnail内嵌缩略图的偏移与长度拍摄参数exif光圈、快门、ISO、焦距、原始拍摄时间位置信息gps经纬度、GPS 时间与日期互操作性interoperabilityEXIF 版本兼容信息厂商信息makernote私有参数内置 AGFA、Epson、富士、奥林巴斯、松下、三洋六家拿项目测试目录里那张 Sony ILCE-6000 的夜景照片做例子一次图片 Exif 提取能读出ISO 100、光圈 F8、6 秒长曝光、33mm 等效焦距连镜头型号E PZ 16-50mm F3.5-5.6 OSS都带出来了。字段全意味着归档、检索、展示都有原料。接到真实工作流里解析出来的字段怎么落地一条解析 → 入库 → 展示的流水线分三步走。如何批量导出照片拍摄参数遍历目录下的 JPEG逐张提取相机型号、拍摄时间、光圈、快门、焦距、ISO追加写入 CSV 或数据库表。照片库从一堆文件夹变成可查询的档案库WHERE 光圈 F8 AND ISO 200这类条件直接可用。照片方向不对怎么修相册里总有些照片显示是倒的或侧的。原因JPEG 像素本身没旋转姿态由image.Orientation字段声明8表示逆时针旋转 90° 才是正常朝向。入库前读出该字段按映射规则生成已摆正的副本用户端就彻底告别旋转逻辑。GPS 坐标读取与地理时间线带定位的照片会返回经纬度和 GPS 时间、日期。把坐标写进库就能做三件事地图上聚类展示旅行足迹、按 GPS 时间戳自动还原拍摄顺序、逆地理编码生成拍摄于 XX 城市标签。这是 Node.js 图片元数据管理里最有获得感的一环。三种调用方式 两个实用选项方式用法适合场景传文件路径new ExifImage({ image: a.jpg }, cb)本地批量处理传 Buffernew ExifImage({ image: buf }, cb)上传到服务器、未落盘的文件流实例复用实例化后多次loadImage(path, cb)一个实例连续解析多张图两个选项点到为止maxEntries限制解析条目数。解析来源不可信的图片前务必设上限挡住超大 Exif 结构拖慢服务。fixThumbnailOffset修正缩略图偏移让内嵌缩略图能被正确截取。核心实现见 lib/exif/ExifImage.js更多说明见 README.md厂商私有参数逻辑集中在 lib/exif/makernotes/。翻车自救指南按踩坑频率从高到低排时间格式先转换exif.DateTimeOriginal是YYYY:MM:DD HH:MM:SS冒号分隔直接插库会乱。入库前转成标准时间戳或YYYY-MM-DD HH:MM:SS顺手把 GPS 时间也做同样处理。Buffer 字段要转字符串ExifVersion、ColorSpace这类字段以 Buffer 形式返回直接渲染到页面会打出乱码。展示前先toString()或转数字。makernote 单独容错厂商私有格式各说各话已内置 AGFA、Epson、富士、奥林巴斯、松下、三洋六家未支持的机型解析可能抛错。建议try住这一支保证image、exif、gps这些主流字段照常可用。解析不可信文件设好上限maxEntries不是可选项是上传接口的标配。配合文件类型预检恶意构造的超大结构基本进不了回调。只认 JPEGnode-exif 只读 JPEG。PNG、WebP 没有 Exif 容器别浪费回调。入口先过滤扩展名和文件头再决定是否调用解析。下一步先拿 10 张手边的 JPEG 跑一遍最小示例把回调里的字段全贴出来看一眼。看完再决定先上参数归档还是方向校正顺序由你自己定。【免费下载链接】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),仅供参考
返回列表