上传到 ftp 站点时,原始文件创建日期似乎丢失了,而我得到了上传日期。但是,文件中的 Exif 数据是正确的。是否有工具可以从 Exif 日期批量更改创建日期?
[ OP 编辑 #1:事实证明,exiftool 创建者/维护者 Phil Harvey 在ExifTool 论坛上的一个重复线程中很好地回答了这个问题]
[ OP 编辑 #2:来自ExifTool 常见问题解答:ExifTool在尝试删除所有元数据时不能保证从文件中完全删除元数据。请参阅“作家限制”。]
我想在旧硬盘上搜索当前备份驱动器上没有的照片。格式包括 jpg、png、tif 等...,以及各种原始格式(不同的相机型号和制造商)。
我只对图像本身的唯一性感兴趣,而不是由于 exif 标签的值、给定 exif 标签本身的存在/不存在、嵌入的缩略图等的差异而引起的唯一性......
尽管我不希望在其他相同图像的不同副本之间发现任何损坏/数据腐烂,但我想检测到这一点,以及由于调整大小和颜色变化而导致的差异。
[编辑 #3 由 OP:澄清:一小部分误报是可以容忍的(如果文件不是唯一的,则认为它是唯一的),而漏报是非常不可取的(文件被错误地推断为重复)。 ]
我的计划是在剥离任何和所有元数据后根据 md5sums 确定唯一性。
如何剥离元数据?
将exiftool -all= <filename>足够?
如果我通过 exiv 将图像重命名为 exif 日期时间,我会执行以下操作:
find . -iname \*jpg -exec exiv2 -v -t -r '%Y_%m_%d__%H_%M_%S' rename {} \;
Run Code Online (Sandbox Code Playgroud)
现在可能会发生图片具有完全相同的时间戳(包括秒)。如何自动使文件名唯一?
该命令应该是稳定的,因为如果我再次在相同的目录结构上执行它(可能在添加新图片之后),已经重命名的图片不应该改变,如果添加了已有文件名的图片,新文件名应该是唯一的以及。
我的第一次尝试只是在结果文件名中保留原始基名,但是从上面的意义上说,该命令将不稳定。
假设我有一堆照片,所有照片都有正确的 EXIF 信息,并且照片是随机命名的(因为我遇到了问题)。我有一个名为的小程序jhead,它给了我以下输出:
$ jhead IMG_9563.JPG
File name : IMG_9563.JPG
File size : 638908 bytes
File date : 2011:02:03 20:25:09
Camera make : Canon
Camera model : Canon PowerShot SX210 IS
Date/Time : 2011:02:03 20:20:24
Resolution : 1500 x 2000
Flash used : Yes (manual)
Focal length : 5.0mm (35mm equivalent: 29mm)
CCD width : 6.17mm
Exposure time: 0.0080 s (1/125)
Aperture : f/3.1
Focus dist. : 0.29m
ISO equiv. : 125
Exposure bias: -1.67
Whitebalance : Manual …Run Code Online (Sandbox Code Playgroud) 有问题 从 JPEG EXIF 元数据更改文件创建日期 有很棒的脚本,可以更新文件系统日期,以匹配存储在文件中的日期。但是,如果 exif 数据中的“日期和时间(原始)”不好怎么办(因为相机中设置的时间错误)。
是否有解决方案可以将目录中所有文件的时间更改大约 +/- n 分钟?要么更正 exif 数据(然后使用上面链接中的一个很棒的脚本),要么只更正文件的时间戳。
如何使用像 exiv2 这样的工具打印图像 Exif 日期?
我的目标是将图像年和月写入单独的变量。我真的必须用正则表达式解析输出还是有这样的替代方法:
exiv2 DSC_01234.NEF -ps | grep 'Image timestamp' | ...regex to parse the date
Run Code Online (Sandbox Code Playgroud) 我无法完成这项工作。我有很多图像,我想重命名他的名字并使用 exiv2 将图像大小附加到名称
exiv2 pr * 打印有关文件的所有信息
# exiv2 pr 9b523e5a002268fe5067a928
File name : 9b523e5a002268fe5067a928
File size : 356433 Bytes
MIME type : image/jpeg
Image size : 1920 x 1200
Run Code Online (Sandbox Code Playgroud)
现在我想重命名我的文件看起来像
9b523e5a002268fe5067a928_1920x1200.jpeg
Run Code Online (Sandbox Code Playgroud)
我已经做了这样的事情
exiv2 pr * | grep "Image " | awk -F':' '{ print $2 }' | sed 's/ //g'
Run Code Online (Sandbox Code Playgroud)
它给了我图像大小,但我如何扩展它以获取图像 MIME 类型以使 .jpeg 正确?
我有模拟相机,我把胶片交给实验室,他们扫描它,我想将它上传到 flickr,但想更改有关相机的信息。现在它是NORITSU KOKI QSS-32_33,我希望它是pentax k1000(我不想清除 exif 数据)。如何从命令行执行此操作。
尝试返回一个适合参数的图像文件时遇到问题。$1 是搜索参数,在这个事件中它是“真实的”,它是给定文件夹中图像之一(不是两个)上的标签。当我称它为“./test.sh real”时会发生什么,它会打印出两个图像,而不仅仅是一个。我想它必须处理我将函数返回设置为变量和/或我的条件语句,但我不太确定。
#!/bin/bash
for f in specim/*.jpg
do
image=$(exiftool -EXIF:XPKeywords $f | grep "$1")
if [[ ! -z "$image// }" ]]; then
echo $f
fi
Run Code Online (Sandbox Code Playgroud)
返回了什么:
../../test.sh real
specim/image2.jpg
specim/image.jpg
Run Code Online (Sandbox Code Playgroud)
这个 bash 脚本打印出我想要的东西,只有一个图像而不是两个(作为我不想要的 exiftool 东西,但这只是一个测试):
#!/bin/bash
for f in *.jpg
do
exiftool -EXIF:XPKeywords $f | grep $1
done
Run Code Online (Sandbox Code Playgroud)
结果:
./test2.sh real
XP Keywords : name;real
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,这可能非常简单......谢谢
curl -s -v -X HEAD http://sitename.com/123.jpg 2>&1 | grep '^< Last-Modified:'约我约会。有什么办法可以检索图像的 GPS 坐标?还有其他元数据吗?