Contents

照片整理

问题

当你有太多的照片后,很多文件的名字可能都是重复,而且也不好认。我一般会把照片按照时间重新命名,比如成这样“云南J20190206_143324.jpg”,好处就是时间地点人物都有了,中间的J代表人物,这样照片可以放在一个目录里不怕重复。

/imagewithexif.webp

工具ExifTool

ExifTool可以把照片里的参数提取出来,包括时间和地址。精确的拍照时间有几个参数,当然可以和下面那个程序一样把最早的时间找出来作为主时间。

图片1
图片2

这个Shell文件就是用到了ExifTool工具,对比几个重要的时间,然后找出满意的。 我最多用照片EXIF内DateTimeOriginal的数据,这是一个ExifTool的config文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

%Image::ExifTool::UserDefined = (
    'Image::ExifTool::Composite' => {
        # Select oldest date from a number of date tags
        OldestDateTime => {
            Desire => {
                0 => 'FileModifyDate',
                1 => 'ModifyDate',
                2 => 'DateTimeOriginal',
            },
            ValueConv => q{
                my $oldest = undef;
                for my $date (@val) {
                    $date =~ s/[+-]\\d{2}:\\d{2}$//; # Strip TimeZone
                    if ($date && (!$oldest || $date lt $oldest)) {
                        $oldest = $date;
                    }
                }
                return $oldest;
            },
        },
    },
);

更新DateTimeOriginal

照片内的EXIF因为有些复制完后数据就丢失了,所以更新和保存原始数据就很关键。我们通常在微信里传播的照片,可能是考虑到了隐私问题,就被移除了地址和时间信息。

1
exiftool -config ../e_date −overwrite_original "-DateTimeOriginal<OldestDateTime" .

答案

大多数的照片名字是没有意义的。用目录名表示事件,然后用文件名表示时间是我最喜欢的方法。这样就可以很快的定位到想要找的照片。

/pics.webp

1
exiftool -d J%Y%m%d_%H%M%S%%-c.%%le "-filename<FileCreateDate" "-filename<createDate" "-filename<datetimeoriginal" .