根据exif标记重命名图像文件

pyimgren的Python项目详细描述


Travis-CI Build StatusAppVeyor Build statusDocumentation Status

平格伦

一个Python模块,根据它们的标记来重命名图像。

当前状态

此软件包自0.1.0版起在pypi中分发。它可以被最终用户使用,但应该考虑beta质量,因为它仍然缺乏广泛的测试。其完整源代码可从GitHUB获得。

目标

数码相机按顺序命名图片。当您要将来自多个相机的图片放在同一文件夹中时,它们将按相机而不是按图片日期和时间进行排序。

即使我们可以找到一些允许对这些图片进行批量重命名的程序,我也找不到可移植的python模块。所以这个项目的目标是:

  • 几乎没有依赖关系:python 3(测试为>;=3.3)
  • 很少有额外的模块需求:安装时只需要piexifi18nparse
  • 可移植性:这是一个纯python包,在travis ci(linux)和appveyor(windows)上测试了3.3到3.6版本(仅适用于appveyor的3.7版本)。

本地化

该包支持gettext类型本地化,并提供法语翻译。

用法:

作为python模块

PyimGrand包包含一个单独的类^ {< CD1>},使用两个公共方法:^ {CD2>}根据它们的ExIF日期重命名图片文件,和^ {CD3>},将它们重命名为它们的原始名称。

重命名器用于重命名相机提供的图像名称 (通常是imgxxxxx.jpg或dscfyyyy.jpg,根据时间转换成一个名称) 拍摄照片的时间(就像智能手机一样)。那时候是 从图片的EXIF标签中提取。如果 图片不包含EXIF时间。(可选)要添加到的分钟数 EXIF时间可以用来处理来自摄像机的图像。 有一个错误的时间..

将在文件夹中创建名为names.log的文件以存储新名称 还有原来的,为了能重新命名。

使用以下命令创建重命名程序:

renamer = Renamer(folder, src_mask = "DSCF*.jpg",
                dst_mask = "%Y%m%d_%H%M%S",
                ext_mask = ".jpg",
                ref_file = "names.log",
                delta = 0.0,
                debug = False,
                dummy = False)

参数:

  • 文件夹:将重命名图片的默认文件夹
  • src_mask:选择要重命名的文件的模式(默认 “dscf*.jpg”)
  • dst_mask:包含strftime格式指令的格式 将用于图片的新名称(默认 %y%m%d\u%h%m%s“
  • ext_mask:新名称的扩展名(默认为“.jpg”)
  • ref_file:将记住旧名称的文件的名称 (默认“names.log”)
  • 增量:一个(浮点)分钟数添加到子文件夹中 标记时间(默认为0.0)
  • 调试:一个布尔标志,它将导致为 每次重命名为true(默认为false)
  • dummy:一个布尔标志,它将导致“dry run”,意思是 将扫描该文件夹,并最终打印调试信息 但不会重命名任何文件(默认为false)

典型用途:

from pyimgren import Renamer
...
conv = Renamer(path)
conv.rename()    # to convert to "date" names
...
conv.back()      # if you want to revert to original names

作为脚本

pip安装在scripts目录中安装一个pyimgren脚本(在windows上是pyimgren.exe)。然后可以直接使用它(只要脚本目录在路径中),语法如下:

usage: pyimgren [-h] [-v] [--folder FOLDER] [-s SRC_MASK] [-d DST_MASK]
                [-e EXT_MASK] [-r REF_FILE] [-x delta] [-D] [-X]
                {rename,back,merge} ...

Rename pictures according to their exif timestamp

positional arguments:
  {rename,back,merge}   sub-commands
    rename              rename files by using their exif timestamp
    back                rename files back to their original name
    merge               merge files from a different folder

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  --folder FOLDER, -f FOLDER
                        folder containing files to rename
  -s SRC_MASK, --src_mask SRC_MASK
                        pattern to select the files to rename
  -d DST_MASK, --dst_mask DST_MASK
                        format for the new file name
  -e EXT_MASK, --ext EXT_MASK
                        extension for the new file name
  -r REF_FILE, --ref_file REF_FILE
                        a file to remember the old names
  -x delta, --delta delta
                        minutes to add to the exif tag time
  -D, --debug           print a line per rename
  -X, --dry_run         process normally except no rename occurs

子命令具有以下语法:

usage: pyimgren [global_options ...] {back|rename} [-h] [files [files ...]]

positional arguments:
  files       files to process (default: content of ref_file)

optional arguments:
  -h, --help  show this help message and exit

以及

usage: pyimgren [global_options ...] merge [-h] folder [files [files ...]]

positional arguments:
  folder      folder from where merge picture files
  files       files to process (default: src_mask)

optional arguments:
  -h, --help  show this help message and exit

usage: pyimgren [-h] [-v] [-b] [-s SRC_MASK] [-d DST_MASK] [-e EXT_MASK]
                [-r REF_FILE] [-x delta] [-D] [-X]
                folder [files [files ...]]

Rename pictures according to their exif timestamp

positional arguments:
  folder                folder containing files to rename
  files                 files of sub folders to process (optional)

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  -b, --back            restore original names
  -s SRC_MASK, --src_mask SRC_MASK
                        pattern to select the files to rename
  -d DST_MASK, --dst_mask DST_MASK
                        format for the new file name
  -e EXT_MASK, --ext EXT_MASK
                        extension for the new file name
  -r REF_FILE, --ref_file REF_FILE
                        a file to remember the old names
  -x delta, --delta delta
                        minutes to add to the exif tag time
  -D, --debug           print a line per rename
  -X, --dry_run         process normally except no rename occurs

作为模块

它可以用作python模块,即使脚本目录不在路径中,也可以在windows中使用它,这要归功于py启动程序,它的语法与脚本相同:

usage: pyimgren [-h] [-v] [--folder FOLDER] [-s SRC_MASK] [-d DST_MASK]
                [-e EXT_MASK] [-r REF_FILE] [-x delta] [-D] [-X]
                {rename,back,merge} ...

或者在使用windows启动程序时py -m pyimgren ...

安装

最终用户安装

使用pip:pip install pyimgren

显影装置

如果您想在自己的代码中贡献或集成pyimgren,您应该从GitHUB

git clone https://github.com/s-ball/pyimgren [your_working_copy_folder]

运行测试

由于该项目打算与pypi兼容,您只需从main运行测试文件夹:

python setup.py test

集成测试依赖于pyfakefs,当您运行python setup.py test时,它会自动从pypi中插入。但它不需要运行pyimgren,也不需要由pip install pyimgren安装。

贡献

由于这个项目是在我的空闲时间开发的,我不能保证很快的反馈。无论如何,我很高兴在github上收到问题或请求。

版本控制

此项目使用标准的major.minor.patch版本控制模式。在主版本中,需要公共api的稳定性(至少在1.0.0版本发布之后)。

许可证

此项目在麻省理工学院许可下获得许可-有关详细信息,请参见license.txt文件

致谢

    EXIF数据处理的困难工作已经在piexif中完成了。
  • 优秀的pyfakefs允许集成测试在假文件系统上运行

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
检查java中两个链表之间的子集   java仅在findViewById()下显示一个ImageButton   在Java Graphics2D中,文本如何在矩形上居中对齐?   java需要一个用于电子表格计算器的正则表达式   ^java中的运算符   java通过一些属性配置文件根据环境动态更改wsdl端点URL   java Ebean/Play框架关系未更新   集合如何将POJO列表转换为Java流中的映射<String,List>?   java为什么JFrame不显示整个图像?   java如何将调用静态导入的泛型方法的结果传递给另一个方法?   迭代器或foreach中的java延迟   需要java socket logback日志接收器   在Java中初始化Map的静态数组   雅加达邮件Java MimeMail:解码后获得额外字符   java为什么这个xmldom解析器不能正确解析rtept、name和cmt标记?   java如何刷新Log4J2中的异步记录器(带中断器)   java使用构建插件pom生成的jar。xml作为同一pom中的依赖项   java基于位置的序列ADT如何在O(1)时间内插入元素?   java ORM实体与DDD实体   Java对象分配