小程序:image-rename(处理数码相机图片文件名的小工具)

features and tips for image-rename
image-rename 功能和使用技巧

coding: utf-8

homepage:
https://sourceforge.net/projects/emacslocale/files/image-rename/

version:

版本:

1.3, 2014-03-23

License: GPL V3 or BSD License

许可证: GPL 第3版,或者 BSD 许可证

Test for:

测试环境:

  • Ubuntu 10.04 i386;

  • GNU bash, version 4.1.5;

  • GNU sed version 4.2.1

Description: image-rename is a command line tool to rename JPG/RAW/TIF

image and other files, by modifing special suffix, prefix and date. it

also can remove EXIF metadata for JPG/RAW/TIF images, and some other

useful features:

  • probe JPG/RAW image files for camera bands;

  • remove EXIF metadata for JPG/RAW images, and save to new files;

  • rename filename by modify suffix;

  • rename filename by add prefix with date and special text;

说明:

image-rename 是一个用来对 JPG/RAW/TIF 图像和其它文件进行重命名的命令行工具。

它通过修改指定的扩展名,前缀文字和日期来实现。还可以用来清除 JPG/RAW/TIF 图像的

EXIF 元数据,以及一些其它的实用功能:

  • 检测 JPG/RAW 图像文件的相机品牌;

  • 移除 JPG/RAW 图像的 EXIF 元数据, 并另存为新的文件;

  • 通过修改扩展名的方式,对文件进行重命名;

  • 通过添加日期和指定的文字前缀,对文件进行重命名;


目录

第一部分:image-rename 功能示例

  • 1 (已完成) 查看 image-rename 程序的使用说明

  • 2 (已完成) 根据数码相机/摄像机图像文件名格式,推测相机/摄像机品牌

  • 3 (已完成) 按图像文件的创建日期(通常即拍照日期),在文件名前面加上日期

  • 4 (已完成) 清除文件名前面的日期文字(即恢复“例301”中的原始文件名)

  • 5 (已完成) 检测图像文件名是否为*.JPG或*.JPEG格式。

  • 6 (开发中) 在文件名前面加上指定的文字

  • 7 (开发中) 在文件名前面加上指定的文字和日期

  • 8 (开发中) 把数码相机图像中的文件名头部改名

第二部分:image-rename 使用技巧

  • 例1(已完成): 查看照片是用什么品牌相机拍的

  • 例2(已完成): 改变某些扩展名(如THM)的图像文件名为新的扩展名JPG,

方便在手机/平板电脑上查看,或者上传到网络相册和QQ空间

  • 例3(已完成): 把例2中的THM图像扩展名改回原始文件名

  • 例4(已完成): 在文件名前面自动添加文件的修改日期

  • 例5(开发中): 在文件名前面自动添加指定文字

  • 例6(已完成): 清除文件名中包含的日期(如发现相机的拍照日期设置错误)

  • 例7(开发中): 去掉已添加的文件名前面的文字

  • 例8(开发中): 改变文件名前面的文字,改为其它相机的文件名编号规则

  • 例9(开发中): 把例8中的两步,简化成一步操作

  • 例10(已完成): 去除JPG图像中的EXIF元数据,而不是只改变文件名

附录1:使用 imagemagick 软件包 的 convert 命令清除JPG图像的EXIF元数据

附录2: 使用 exiftool 命令清除JPG图像的EXIF元数据

=============================================

第一部分:功能示例

  • 1 (已完成) 查看 image-rename 程序的使用说明

    image-rename --readme

  • 2 (已完成) 根据数码相机/摄像机图像文件名格式,推测相机/摄像机品牌

    用法:image-rename -b 文件/多个文件

    image-rename -b

    说明:

    如果未给出文件名,则根据当前语言环境(简体中文或其

    它),列出各品牌数码相机图像的文件名格式说明(目前只

    支持简体中文和英文帮助信息)。

    ** -b 参数代表相机/摄像机的品牌(band);

    ** 支持包含路径的文件名;

    ** 能正确识别包含空格的文件名;

    ** 支持包含通配符的多个文件名;

    例201:检测指定目录下的所有图像文件拍照使用的相机品牌

    命令:image-rename -b ~/DCIM//

    应用场景:

    技术说明:先用file命令检测是否为JPG图像文件,再分析文件名格式,

    判断相机品牌。

    如果文件名是xxx.JPG格式,但实际上文件并不是一个真正

    的JPG图像文件,程序会自动忽略该文件。

输出示例:


1 * 忽略: ‘/home/user/DCIM/101GEDSC/DIR’ (忽略目录, 只支持文件操作)

2 * ‘/home/user/DCIM/101GEDSC/GEDC0001.JPG’ (相机: GE; 格式: JPG)

3 * ‘/home/user/DCIM/101GEDSC/GEDC0001.THM’ (相机: GE; 格式: JPG)

4 * ‘/home/user/DCIM/101GEDSC/GEDC0002.JPG’ (相机: GE; 格式: JPG)

5 * ‘/home/user/DCIM/101GEDSC/image-rename.jpg’ (相机: 未知; 格式: JPG)

6 * ‘/home/user/DCIM/101GEDSC/IMG_20140214_201314.jpg’ (相机: 不确定; 格式: JPG)

7 * ‘/home/user/DCIM/101GEDSC/README.txt’ (未知的文件格式,或者文件不可用)

8 * ‘/home/user/DCIM/101GEDSC/test.tar.gz’ (格式: GZ)


  • 3 (已完成) 按图像文件的创建日期(通常即拍照日期),在文件名前面加上日期

    用法:image-rename -d 文件/多个文件

    说明:-d参数代表date(日期)

    例301:将指定目录下的所有文件的文件名更改为“年年年年-月月-日日_原文件名”格式

    命令:image-rename -d ~/DCIM//

    输出示例:


在文件名前面添加日期(自动检测图像/文件的拍照或修改日期,格式为“年年年年-月月-日日_”)…

1 * 忽略: ‘/home/user/DCIM/101GEDSC/DIR’ (忽略目录, 只支持文件操作)

2 * 重命名: ‘/home/user/DCIM/101GEDSC/GEDC0001.JPG’ → ‘2014-03-23_GEDC0001.JPG’ [ OK ]

3 * 重命名: ‘/home/user/DCIM/101GEDSC/GEDC0001.THM’ → ‘2014-03-23_GEDC0001.THM’ [ OK ]

4 * 重命名: ‘/home/user/DCIM/101GEDSC/GEDC0002.JPG’ → ‘2014-03-23_GEDC0002.JPG’ [ OK ]

5 * 重命名: ‘/home/user/DCIM/101GEDSC/image-rename.jpg’ → ‘2014-03-23_image-rename.jpg’ [ OK ]

6 * 重命名: ‘/home/user/DCIM/101GEDSC/IMG_20140214_201314.jpg’ → ‘2014-03-23_IMG_20140214_201314.jpg’ [ OK ]

7 * 重命名: ‘/home/user/DCIM/101GEDSC/README.txt’ → ‘2014-03-23_README.txt’ [ OK ]

8 * 重命名: ‘/home/user/DCIM/101GEDSC/test.tar.gz’ → ‘2014-03-23_test.tar.gz’ [ OK ]


应用场景:保险公司业务员/交警/公检法办案取证,政府部门办证拍照,

地理勘探测绘,旅行者/摄影爱好者按日期整理照片,提高工作

效率,方便查找

免责声明:本程序非商业软件,未进行严格的测试,请勿在重要的商业

计算机上使用本软件。

可能出现的风险:更名时可能出现文件重名,导致某些文件

被覆盖或更改----作者不对此承担任何直接或间接损失。

技术说明:

** 本程序不是按JPG图像的EXIF信息来提取拍照日期;

** 如果拍照时相机日期未正确设置,或者后来有旋转图像操作,

或者用图像软件(如PhotoShop等)处理过文件,或者清除/

修改过EXIF元数据,可能出现改名后的日期不准确。


  • 4 (已完成) 清除文件名前面的日期文字(即恢复“例301”中的原始文件名)

    用法:image-rename -rd 文件/多个文件

    说明:-rd参数代表remove date(删除日期)

    举例:image-rename -rd ~/DCIM//

    应用场景:

    技术说明:

    输出示例:


移除文件名前面的日期文字(“年年年年-月月-日日_”格式)…

1 * 重命名: ‘/home/user/DCIM/101GEDSC/2014-03-23_GEDC0001.JPG’ → ‘GEDC0001.JPG’ [ OK ]

2 * 重命名: ‘/home/user/DCIM/101GEDSC/2014-03-23_GEDC0001.THM’ → ‘GEDC0001.THM’ [ OK ]

3 * 重命名: ‘/home/user/DCIM/101GEDSC/2014-03-23_GEDC0002.JPG’ → ‘GEDC0002.JPG’ [ OK ]

4 * 重命名: ‘/home/user/DCIM/101GEDSC/2014-03-23_image-rename.jpg’ → ‘image-rename.jpg’ [ OK ]

5 * 重命名: ‘/home/user/DCIM/101GEDSC/2014-03-23_IMG_20140214_201314.jpg’ → ‘IMG_20140214_201314.jpg’ [ OK ]

6 * 重命名: ‘/home/user/DCIM/101GEDSC/2014-03-23_README.txt’ → ‘README.txt’ [ OK ]

7 * 重命名: ‘/home/user/DCIM/101GEDSC/2014-03-23_test.tar.gz’ → ‘test.tar.gz’ [ OK ]

8 * 忽略: ‘/home/user/DCIM/101GEDSC/DIR’ (忽略目录, 只支持文件操作)


  • 5 (已完成) 检测图像文件名是否为*.JPG或*.JPEG格式。

    如果不是,自动在文件名后面添加.JPG后缀;

    如果已经是*.JPG或者*.JPEG,忽略该文件不做任何更改

    用法:image-rename -j 文件/多个文件

    说明:* -j参数代表自动更名为JPG文件名后缀

    例401:image-rename -j ~/DCIM//

    对指定目录下的所有JPG图像文件自动添加JPG扩展名。如果已经带有 JPG 扩展名,

    忽略该文件,不执行任何改名操作。

    应用场景:某些数码相机拍照时会自动保存大图(原始照片)和小图(缩略

    图),如通用(GE)相机,会同时生成两个文件GEDC0001.JPG

    (大图)和GEDC0001.THM(缩略图)。可以使用本选项自动把

    .THM小图改名为.THM.JPG,方便上传到网络相册或QQ空间,或

    者在手机/平板电脑上查看小图像。

    技术说明:文件名可以带路径参数

    输出示例:


更改文件的扩展名为 ‘JPG’ …

1 * 忽略: ‘/home/user/DCIM/101GEDSC/DIR’ (忽略目录, 只支持文件操作)

2 * 忽略: ‘/home/user/DCIM/101GEDSC/GEDC0001.JPG’

3 * 重命名: ‘/home/user/DCIM/101GEDSC/GEDC0001.THM’ → ‘GEDC0001.THM.JPG’ [ OK ]

4 * 忽略: ‘/home/user/DCIM/101GEDSC/GEDC0002.JPG’

5 * 忽略: ‘/home/user/DCIM/101GEDSC/image-rename.jpg’

6 * 忽略: ‘/home/user/DCIM/101GEDSC/IMG_20140214_201314.jpg’

7 * 跳过: ‘/home/user/DCIM/101GEDSC/README.txt’ (文件实际格式不符合扩展名’JPG’)

8 * 跳过: ‘/home/user/DCIM/101GEDSC/test.tar.gz’ (不会对压缩文件进行操作)


  • 6 (开发中) 在文件名前面加上指定的文字

    用法:image-rename -p 前缀文字 文件/多个文件

    说明:-p 参数代表 prefix(前缀文字)

    已知缺陷:

    例601:将当前目录下的所有扩展名为JPG的图像文件的文件名更改为“上海_原文件名.JPG”格式

    命令:image-rename -p 上海 *.JPG

    应用场景:保险公司业务员/交警/公检法办案取证,政府部门办证拍照,地理勘探测绘,

    旅行者/摄影爱好者对照片进行批量改名,提高工作效率,也方便查找和复制转移

    免责声明:本程序非商业软件,未进行严格测试,请勿在重要场合或商业计算机上使用本软件。

    可能出现的风险:更名时可能出现文件重名,导致某些文件

    被覆盖或其它可能出现的异常,作者不承担因此导致的任何直接或

    间接责任。

    技术说明:

    输出示例:




  • 7 (开发中) 在文件名前面加上指定的文字和日期

    用法:image-rename -pd 前綴文字 文件/多个文件

    说明:等同于第4项和第6项中功能的合并。

    应用场景:

    技术说明:


  • 8 (开发中) 把数码相机图像中的文件名头部改名

    用法:image-rename -rm 前缀文字 文件/多个文件

    用法:image-rename -rp 原前缀 新前缀 文件/多个文件

    说明:–rm 参数代表 REMOVE prefix(移除前缀)

    说明:–rp 参数代表 REPLACE prefix(替换前缀)

    已知缺陷:

    应用场景:

    避免他人直接从图像文件名看出拍照使用的相机品牌,保护个人

    和公司秘密。

    技术说明:

    ** 本程序仅修改文件名,不会修改或清除JPG图像中的EXIF信息。

    其他人仍可以从图像的EXIF信息中,查看相机拍照的相关信息。

    如果有需要,请选用其它图像处理软件来清除图像中EXIF信息。

=============================================

第二部分:image-rename 使用技巧

例如,数码相机内存卡里有2个文件,分别是

/home/user/DCIM/101GEDSC/GEDC0001.JPG

/home/user/DCIM/101GEDSC/GEDC0001.THM

  • 例1(已完成):查看照片是用什么品牌相机拍的

参数:-b 文件名

具体操作:

先进入图像目录:

cd /home/user/DCIM/101GEDSC/

然后运行:

image-rename -b *

输出信息示例:


根据JPG/RAW/TIFF图像文件名格式, 推测相机/摄像机品牌…

1 * test.JPG/GEDC0360.THM (相机: GE; 格式: JPG)

2 * test.JPG/GEDC0360.JPG (相机: GE; 格式: JPG)


输出信息解释:

上面的信息显示相机品牌为GE(美国通用),两个文件实际都是JPG格式。

通过查看文件大小,可以确定JPG结尾的文件是大图像,THM结尾的是缩略图。

技术说明:

  1. 程序会自动检测图像类型,目前支持JPG/TIFF/RAW等图像的格式检测;

  2. 支持带目录路径的文件名,如可以直接指定文件和路径:

image-rename -b ~/DCIM/101GEDSC/*

  1. 能正确识别包含空格的文件名;
  • 例2(已完成):更改上面的THM图像的文件名结尾为JPG,方便在手机/平板电脑上查看,

    或者上传到网络相册和QQ空间

运行:image-rename -j *

输出示例:


更改文件名尾部的扩展名为 .JPG …

1 * ignore: ‘directory’ is a DIRECTORY (accept FILE only)

2 * skip: ‘GEDC0001.JPG’

3 * rename: GEDC0001.THM → GEDC0001.THM.JPG [ OK ]

4 * skip: ‘GEDC0001.THM.zip’ (never rename an archive file)


技术说明:

  1. 出于文件名安全考虑,结合实际使用情况,本程序会自动识别并跳过目录和压缩文件,

不会对目录名和压缩文件作执行任何重命名操作;

  1. 如果文件名没有扩展名,或只有一个扩展名,程序会自动在末尾添加新的扩展名JPG,如:

GEDC0002 → GEDC0001.JPG

GEDC0001.THM → GEDC0001.THM.JPG

  1. 如果文件名有2个或更多的扩展名,程序会自动把末尾的扩展名改为JPG
  • 例3(已完成):把例2中的THM图像扩展名改回原始文件名

运行:image-rename -s THM THM

输出示例:


1 * rename: GEDC0001.THM.JPG → GEDC0001.THM [ OK ]

2 * skip: ‘GEDC0001.THM.zip’ (never rename an archive file)


  • 例4(已完成):在文件名前面自动添加文件的修改日期

运行:image-rename -d *

输出示例:


1 * ignore: ‘directory’ (is a DIRECTORY, but accept FILE only)

2 * rename: ‘GEDC0001.JPG’ → ./2014-03-10_GEDC0001.JPG [ OK ]

3 * rename: ‘GEDC0001.THM’ → ./2014-03-10_GEDC0001.THM [ OK ]

4 * rename: ‘GEDC0001.THM.zip’ → ./2014-03-10_GEDC0001.THM.zip [ OK ]


  • 例5(开发中): 在文件名前面自动添加指定文字

运行:image-rename -p 杭州 *

输出示例:



  • 例6(已完成):清除文件名中包含的日期(如发现相机的拍照日期设置错误)

运行:image-rename -rd *

输出示例:


移除文件名里的日期文字(“年年年年-月月-日日_”格式)…

1 * 重命名: 2014-03-10_GEDC0001.JPG → ./GEDC0001.JPG

2 * 重命名: 2014-03-10_GEDC0001.THM → ./GEDC0001.THM

3 * 重命名: 2014-03-10_GEDC0001.THM.zip → ./GEDC0001.THM.zip

4 * 忽略目录(只支持文件操作): ‘directory’


  • 例7(开发中):去掉已添加的文件名前面的文字

运行:image-rename -rm GEDC *

输出示例:



  • 例8(开发中):改变文件名前面的文字,改为其它相机的文件名编

    号规则如把原通用相机的 GEDC****.JPG 格式文件名,改为

    三星相机的 SSM*****.JPG 格式文件名

具体操作:目前需要分2步进行:

第1步:先去除原来的文件名字头。具体可参考例7。

运行:image-rename -rm GEDC *

第2步:再添加新的文件名字头。具体可参考例5。

运行:image-rename -p SSM0 *

输出示例(第1步):



输出示例(第2步):



  • 例9(开发中):把例8中的两步,简化成一步操作

    说明:功能和代码处于开发状态,后续版本会加入。

    参考运行参数:image-rename -rp GEDC SSM0 *

  • 例10(已完成):去除JPG图像中的EXIF元数据,而不是只改变文件名

说明:本选项只清除JPG/TIF/RAW图像文件的EXIF元数据,处理后另存为

“原文件名.noexif.扩展名”,原始文件不会做任何删除或更改,

也不会对压缩文件或其它格式文件执行任何操作。

技术原理:运行时调用 imagemagick 的 “convert -strip”命令和参数。

详细操作见后面《附录1》。

命令:image-rename --noexif ~/DCIM//

输出示例:


移除JPG/RAW/TIFF图像的EXIF元数据…

1 * 忽略: ‘/home/user/DCIM/101GEDSC/DIR’ (忽略目录, 只支持文件操作)

2 * 另存为: ‘/home/user/DCIM/101GEDSC/GEDC0001.JPG’ → ‘GEDC0001.JPG.noexif.JPG’ [ OK ]

3 * 另存为: ‘/home/user/DCIM/101GEDSC/GEDC0001.THM.JPG’ → ‘GEDC0001.THM.JPG.noexif.JPG’ [ OK ]

4 * 另存为: ‘/home/user/DCIM/101GEDSC/GEDC0002.JPG’ → ‘GEDC0002.JPG.noexif.JPG’ [ OK ]

5 * 另存为: ‘/home/user/DCIM/101GEDSC/image-rename.jpg’ → ‘image-rename.jpg.noexif.jpg’ [ OK ]

6 * 另存为: ‘/home/user/DCIM/101GEDSC/IMG_20140214_201314.jpg’ → ‘IMG_20140214_201314.jpg.noexif.jpg’ [ OK ]

7 * 忽略: ‘/home/user/DCIM/101GEDSC/README.txt’ (未知的文件格式,或者文件不可用)

8 * 忽略: ‘/home/user/DCIM/101GEDSC/test.tar.gz’ (不会对压缩文件进行操作)


提示:清除EXIF元数据后,保存的图像文件的修改时间会变成当前时间,

如果这时使用 image-rename -d 参数来以日期重命名文件名,可能

执行结果与期望不符。建议有需要的用户,请先运行 -d 参数改变图像

文件名,然后再运行 --rmexif 来清除 EXIF 元数据。

=========================================

附:如何在Linux下清除JPG图像的EXIF元数据

目前有2种比较实用的方法,只要在命令行下输入相关命令和参数即可。

  • 附录1:使用 imagemagick 软件包的 convert 命令清除JPG图像的EXIF元数据

资料来源:

http://demi-panda.com/2012/12/04/linux-imagemagick/

使用 imagemagick 命令去除JPEG图像多余的Exif信息

Exif信息是数码相机在拍摄过程中采集的一系列信息,这些信息放置

在我们熟知的jpg文件的头部,也就是说Exif信息是镶嵌在JPEG图像文件

格式内 的一组拍摄参数,主要包括摄影时的光圈、快门、ISO、日期时间

等各种与当时摄影条件相关的讯息,相机品牌型号,色彩编码,拍摄时录

制的声音以及全球定位 系统(GPS)等信息。简单的说,它就好像是傻瓜

相机的日期打印功能一样,只不过Exif信息所记录的资讯更为详尽和完备。

不过,具有Exif信息的 JPEG图像文件要比普通的JPEG文件略大一点。

还有就是像PS这种软件处理过的图像会有"program comments"。

如果不是专业的摄影类网站,这些信息是没有用的,可以去掉:

convert -strip input.jpg output.jpg

命令语法解释:

input.jpg 指原始图像文件

output.jpg 指另存为的文件名


  • 附录2: 使用 exiftool 命令清除JPG图像的EXIF元数据

资料来源:

http://www.guokr.com/article/6719/

Linux用户需要下载一叫做EXIFTool的软件。

这份软件也同样适用于Windows和Mac操作系统,但使用起

来比上述方法要复杂些。

在Linux环境下,你可以输入下面这个语句来把这个软件安装到

Ubuntu上:

sudo apt-get install libimage-exiftool-perl

要清除exif信息,只需把工作目录改变为目标图像的文件夹,然后输入语句:

exiftool -all= *.jpg

这一指令也会把所有参与处理的图像复制一份,并在原图的名称上加上

后缀_original用以区别。

有有:)