我想通过剥离EXIF元数据(convert -strip ...
)来减小图像大小,但问题是我想保留"拍摄日期"条目。有可能吗?例如:convert -quality 80 -strip-except "date taken" source.jpg dest.jpg
这取决于将"拍摄日期""保存在正常图像查看程序可以解析的正确位置"的重要性。如果您只想将原始日期/时间保存在文件的某个地方,您可以提取它并将其保存在"注释"字段中,如下所示:
# Use ImageMagick to get the exif:DateTime, e.g. "exif:DateTime: 2014:12:23 13:51:00"
d=$(identify -verbose image.jpg | grep "exif:DateTime:")
# Strip EXIF but then put DateTime in the "Comment" field
convert image.jpg -strip -set comment "$d" result.jpg
更新
事实上,你可以更简洁地获得日期/时间,并且通过使用以一种与平台无关的方式
identify -format "%[EXIF:DateTime]" image.jpg
2014:12:23 13:51:00
日期和时间现在在"注释"字段中,只是ImageViewers在那里找不到它——尽管你可以使用:
identify -verbose result.jpg
Image: result.jpg
Format: JPEG (Joint Photographic Experts Group JFIF format)
Mime type: image/jpeg
Class: DirectClass
Geometry: 3264x2448+0+0
Resolution: 72x72
Print size: 45.3333x34
Units: PixelsPerInch
Type: TrueColor
Endianess: Undefined
Colorspace: sRGB
Depth: 8-bit
Channel depth:
red: 8-bit
...
...
Interlace: None
Intensity: Undefined
Compose: Over
Page geometry: 3264x2448+0+0
Dispose: Undefined
Iterations: 0
Compression: JPEG
Quality: 96
Orientation: Undefined
Properties:
comment: exif:DateTime: 2014:12:23 13:51:00
不过,更好的方法是使用jhead
。它有以下选项:
-ft Set filetime to EXIF time
-purejpg Strip EXIF, IPTC and other meta-data
-mkexif Create a minimal EXIF section
-dsft Set EXIF time to filetime
你可以随心所欲地把它们串在一起,但可能是按照我展示的顺序。