logo
0
0
WeChat Login

图片日期信息批量处理工具

一个功能强大的Node.js工具,支持批量修改或删除图片的日期信息。通过修改图片内嵌的EXIF数据或文件时间戳来管理拍摄日期,确保日期信息的灵活控制。

🚀 核心功能

📅 修改模式

  • EXIF数据嵌入:日期信息直接写入图片文件内部
  • 复制不丢失:无论复制到哪里(包括网络存储),日期都不会改变
  • 相册兼容:所有相册程序都优先读取EXIF拍摄日期

🗑️ 删除模式(新增!)

  • 清除EXIF日期:删除JPEG/TIFF等格式的EXIF拍摄日期信息
  • 重置时间戳:将PNG/HEIC等格式的文件时间戳重置为当前时间
  • 隐私保护:彻底清除图片中的日期痕迹
  • 批量清理:一键清理整个文件夹的日期信息

核心优势

🤖 智能日期提取(修改模式)

  • 优先级检查:如果图片已有EXIF拍摄日期,自动跳过
  • 文件名提取:从文件名中智能提取日期信息(最高优先级)
    • ⭐ 时间提取:优先提取完整的日期和时间(如:20:23:10)
    • 默认时间:提取不到时间时使用12:00:00
  • 逐级目录提取:文件名无法提取时,从文件所在目录开始逐级向上查找日期
  • 灵活适应:支持复杂的目录结构,自动找到最近的有效日期
  • 精确时间:手机拍照等文件名包含的精确时间信息得到充分利用

🛡️ 安全可靠

  • 功能选择:启动时选择修改或删除模式
  • 自动备份:处理前可选择创建备份文件
  • 预览模式:先预览要处理的文件,确认后再执行
  • 无损处理:只修改日期信息,不影响图片质量

安装依赖

npm install

使用方法

npm start

或者

node index.js

交互式操作

程序启动后会提示您选择和输入:

🎯 第一步:选择功能模式

  • 📅 修改图片日期信息:添加或更新拍摄日期
  • 🗑️ 删除图片日期信息:清除EXIF日期或重置时间戳

⚙️ 第二步:配置参数

  1. 文件夹路径:要处理的图片文件夹路径
  2. 递归处理:是否处理子文件夹中的图片
  3. 创建备份:是否为每个处理的图片创建备份文件
  4. 预览模式:是否先预览要处理的文件(强烈推荐)

支持的图片格式

EXIF 数据支持(推荐)

  • JPG/JPEG - 最常用的图片格式,完美支持 EXIF
  • TIFF/TIF - 高质量图片格式,完美支持 EXIF
  • RAW 格式 - CR2, NEF, ARW, DNG, ORF, RW2, PEF, SRW 等

文件时间戳支持

  • PNG - 通过修改文件创建/修改时间设置日期
  • GIF - 通过修改文件创建/修改时间设置日期
  • BMP - 通过修改文件创建/修改时间设置日期
  • WebP - 现代网络图片格式
  • HEIC/HEIF - 苹果设备高效图片格式(iPhone/iPad 默认格式)⭐

处理方式说明

  • EXIF 支持格式:日期信息写入图片内部 EXIF 数据,永久保存
  • 文件时间戳格式:修改文件系统的创建和修改时间,在大多数相册软件中有效

🍎 苹果设备用户特别说明(重要更新!)

  • HEIC 格式完全支持:iPhone/iPad 拍摄的 HEIC 图片可以正常处理
  • ⭐ 新功能:现在使用真正的 EXIF 数据处理,而不是文件时间戳!
  • 处理方式:使用 ExifTool 修改 HEIC 内部的 EXIF 数据(DateTimeOriginal, CreateDate, ModifyDate)
  • 持久性更强:EXIF 数据比文件时间戳更稳定,不会因文件操作而丢失
  • 批量处理:支持从 iPhone 导出的大量 HEIC 图片批量处理 +++++++ REPLACE

<replace_in_file id="mf0jdrirk6h5pux001ij263rm1o89xcu"> README.md ------- SEARCH

日期格式示例

文件夹名称示例

  • 2025-01-12_项目文件 → 提取日期:2025年1月12日
  • 2024.12.25-圣诞节照片 → 提取日期:2024年12月25日
  • 2023_03_15工作文档 → 提取日期:2023年3月15日

文件名示例

  • IMG_2025-01-12_001.jpg → 提取日期:2025年1月12日
  • 20241225_video.mp4 → 提取日期:2024年12月25日
  • document_12-25-2024.pdf → 提取日期:2024年12月25日 =======

日期提取示例

📁 新的逐级提取逻辑

优先级顺序:

  1. 文件名日期(最高优先级)
  2. 文件所在目录名
  3. 逐级向上查找
  4. 直到根目录

🎯 实际应用场景

📂 2023年照片/ ├── 📂 2023-01-15_春节/ │ └── 📷 IMG001.jpg → 使用:2023-01-15(来自直接父目录) │ └── 📷 IMG_2023-01-20_001.jpg → 使用:2023-01-20(来自文件名,优先级更高) └── 📂 2023-03-20_旅行/ └── 📂 风景照片/ └── 📷 IMG002.jpg → 使用:2023-03-20(向上一级找到)

文件名格式(最高优先级)

🕐 带时间格式(优先提取完整时间)

  • IMG_20210203_202310.HEIC → 提取:2021年2月3日 20:23:10 ⭐
  • IMG_20230815_143025.jpg → 提取:2023年8月15日 14:30:25 ⭐
  • Screenshot_20240312_091530.png → 提取:2024年3月12日 09:15:30 ⭐
  • 2023-01-15_14-30-25.jpg → 提取:2023年1月15日 14:30:25 ⭐
  • 20220505_123456.heic → 提取:2022年5月5日 12:34:56 ⭐

📅 仅日期格式(使用默认12:00:00)

  • IMG_2025-01-12_001.jpg → 提取:2025年1月12日 12:00:00
  • 20241225_photo.jpg → 提取:2024年12月25日 12:00:00
  • photo_2023.03.15.jpg → 提取:2023年3月15日 12:00:00

目录名格式(逐级查找)

  • 2025-01-12_旅行照片/IMG001.jpg → 提取日期:2025年1月12日 12:00:00
  • 2024.12.25-圣诞节/子目录/photo.jpg → 提取日期:2024年12月25日 12:00:00
  • 2023_03_15活动/相册/子文件夹/image.jpg → 提取日期:2023年3月15日 12:00:00

日期格式示例

文件夹名称示例

  • 2025-01-12_项目文件 → 提取日期:2025年1月12日
  • 2024.12.25-圣诞节照片 → 提取日期:2024年12月25日
  • 2023_03_15工作文档 → 提取日期:2023年3月15日

文件名示例

  • IMG_2025-01-12_001.jpg → 提取日期:2025年1月12日
  • 20241225_video.mp4 → 提取日期:2024年12月25日
  • document_12-25-2024.pdf → 提取日期:2024年12月25日

🎯 使用场景

📅 修改模式适用于

  • 整理老照片:为没有拍摄日期的老照片添加日期信息
  • 文件夹批量处理:根据文件夹名称统一设置拍摄日期
  • 数据迁移:确保照片在不同设备间保持正确的日期信息
  • 相册管理:让相册软件按拍摄日期正确排序

🗑️ 删除模式适用于

  • 隐私保护:发布图片前清除日期等元数据信息
  • 数据清理:批量清除图片中的时间戳信息
  • 重置处理:清除错误的日期信息,准备重新设置
  • 匿名分享:去除图片中的时间痕迹

注意事项

  1. 备份重要文件:建议在处理重要文件前先进行备份
  2. 预览功能:首次使用建议开启预览模式,确认无误后再执行
  3. 权限要求:确保程序对目标文件夹有读写权限
  4. 日期验证:程序会验证提取的日期是否有效,无效日期会被跳过
  5. 删除不可逆:删除模式会永久清除日期信息,请谨慎使用

依赖包说明

  • inquirer: 提供交互式命令行界面
  • exifr: 读取图片EXIF数据
  • piexifjs: 修改图片EXIF数据
  • exiftool-vendored: 处理HEIC格式的专业EXIF工具 ⭐
  • chalk: 彩色控制台输出
  • fs-extra: 增强的文件系统操作

许可证

MIT License

About

修改图片日期

Language
JavaScript100%