图片EXIF信息查看与Exiftool使用

​ 今天元宵节,一位版主在论坛发了一篇元宵节祝福帖子,一大早就有用户报障说帖子中有张图片在iOS端看不了,安卓手机正常,第一反应是图片格式问题,用Safari打开也看不了,回到公司证实了是一张webp格式图片,最后将其转换成jpg格式发给了用户重新上传替换。

下图后缀名为jpg,实际是webp格式图片,在谷歌系浏览器上才显示正常,Safari浏览器无法显示

photo

上图为转换后的图片,webp格式图片简书无法上传
webp格式原图链接

一、什么是EXIF

​ 可交换图像文件格式常被简称为Exif(Exchangeable image file format),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。Exif 可以被附加在 JPEG、TIFF、RIFF 等文件之中,为其增加有关数码相机拍摄信息的内容和缩略图或图像处理软件的一些版本信息。

了解更多:维基百科

EXIF在线查看

图虫EXIF查看器alpha版
exif-viewer
get-metadata (支持图片、其它文件)
http://exif.regex.info/exif.cgi 支持URL链接
以上几个是使用过的对图片EXIF解析支持最好的,网上的一些工具会解析失败。

二、Exiftool使用

一)为什么使用Exiftool

  • exiftool是经过测试发现对图片EXIF信息解析支持是最好的(如果有更好的请补充)
  • exiftool支持图片EXIF信息查询,修改及批量操作,还支持其它文件的EXIF操作。
  • 安全隐私问题,因为经常有网上暴露图片隐私问题,使用在线需要上传到服务器。采用exiftool保证了图片的安全和隐私,显然是最适合的。
    ​ 我们知道文件后缀名并不能代表文件的类型格式,比如上图webp格式后缀名是jpg,换言之一张jpg后缀名图片可能不是jpg图片,可能是webpngtext或其它类型文件。那么怎么快速了解它是哪种类型文件并获取它的一些其它信息呢,这时exiftool就派上用场了,试了下其它几个Exif工具,也用Mac/iOS原生代码测试了下,发现不能有效的读取jpg后缀的webp图片,而exiftool能很好支持。注意并非每一张图片都包含 exif 信息,像微信朋友圈如果发表的不是原图就没有。
二)Exiftool安装与使用
1、exiftool安装
$ brew install exiftool

或直接下载:https://sno.phy.queensu.ca/~phil/exiftool/

2、查看EXIF信息
$ exiftool photo.jpg  #默认显示所有的信息 exiftool+图片路径/图片名.jpg

输出信息如下:

#$ ExifTool /Users/apple/Desktop/photo.jpg
ExifTool Version Number         : 10.80
File Name                       : photo.jpg
Directory                       : /Users/pconline/Desktop
File Size                       : 18 kB
File Modification Date/Time     : 2018:03:02 10:22:03+08:00
File Access Date/Time           : 2018:03:02 11:47:58+08:00
File Inode Change Date/Time     : 2018:03:02 11:47:57+08:00
File Permissions                : rw-r--r--
File Type                       : WEBP
File Type Extension             : webp
MIME Type                       : image/webp
VP8 Version                     : 0 (bicubic reconstruction, normal loop)
Image Width                     : 640
Horizontal Scale                : 0
Image Height                    : 400
Vertical Scale                  : 0
Image Size                      : 640x400
Megapixels                      : 0.256
从打印信息我们可以看到,图片photo.jpg虽然后缀名是jpg,但File Type则是WEBP
3、Exiftool常用命令示例

终端输入

$ exiftool -h #查看使用详细列表

使用帮助,可看到所有命令帮助,也可看到exiftool的支持文件类型和文件元信息如下:

File Types
----------------------+----------------------+---------------------
3G2   r/w   | DVB   r/w   | JPEG  r/w   | ODT   r     | RIFF  r
....
Meta Information
----------------------+----------------------+---------------------
EXIF           r/w/c  |  CIFF           r/w  |  Ricoh RMETA    r
GPS            r/w/c  |  AFCP           r/w  |  Picture Info   r
IPTC           r/w/c  |  Kodak Meta     r/w  |  Adobe APP14    r
XMP            r/w/c  |  FotoStation    r/w  |  MPF            r
MakerNotes     r/w/c  |  PhotoMechanic  r/w  |  Stim           r
Photoshop IRB  r/w/c  |  JPEG 2000      r    |  DPX            r
ICC Profile    r/w/c  |  DICOM          r    |  APE            r
MIE            r/w/c  |  Flash          r    |  Vorbis         r
JFIF           r/w/c  |  FlashPix       r    |  SPIFF          r
Ducky APP12    r/w/c  |  QuickTime      r    |  DjVu           r
PDF            r/w/c  |  Matroska       r    |  M2TS           r
PNG            r/w/c  |  MXF            r    |  PE/COFF        r
Canon VRD      r/w/c  |  PrintIM        r    |  AVCHD          r
Nikon Capture  r/w/c  |  FLAC           r    |  ZIP            r
GeoTIFF        r/w/c  |  ID3            r    |  (and more)
4、查询相关命令
$cd /Users/apple/Desktop
exiftool photo.jpg #查看所有信息
exiftool -a -u -g1 photo.jpg #查看所有元信息,包括重复和未知标签,并按小组排列
exiftool -s -ImageSize -ExposureTime photo.jpg #查看图片尺寸
exiftool -common dir  #查看dir目录文件信息(不仅仅是图片)
exiftool -l  c.jpg d.jpg  #从两个图像文件打印所有信息。
exiftool -l -canon c.jpg d.jpg  #从两个图像文件打印标准的佳能信息。
5、写入编辑命令

更改创建和修改时间

$ exiftool -gps:all= photo.jpg  #有些相机会记录拍照时的GPS定位信息。如果你不希望别人看到使用该命令删除gps信息
$ exiftool -all= photo.jpg  #删除所有信息
$ exiftool -all= --exif:all photo.jpg  #删除EXIF以外的所有信息

写入标签

$ exiftool -artist=标签名称 photo.jpg            #写入艺术家标签
$ exiftool -artist=标签名称 a.jpg b.jpg c.jpg   #写多个文件
$ exiftool -artist=标签名称  /exiftoolTest      #写在一个目录的所有文件 exiftoolTest为文件夹

其它:

exiftool -Comment ='这是一个新的评论'dst.jpg
    向JPG图片写入新评论(取代任何现有评论)。
exiftool -comment = -o newdir -ext jpg。
    删除当前目录中所有JPG图像的评论,
    将修改后的图像写入新目录。
exiftool -keywords = EXIF -keywords =编辑器dst.jpg
    用两个新的关键字(“EXIF”和。)替换现有的关键字列表
    “编辑”)。
exiftool -Keywords + =单词-o newfile.jpg src.jpg
    将源图像复制到新文件,然后添加关键字(“单词”)
    当前关键字列表。            
exiftool -credit- = xxx dir
    从一个目录中的所有文件中删除信用信息,信用值是“xxx”。
exiftool -all = dst.jpg
    从图像中删除所有元信息。注意:你不应该
    对RAW图像(DNG除外)进行处理,因为它是专有的RAW图像
    格式通常包含制造注释中的信息
    转换图像所必需的。
exiftool -all = -comment ='寂寞'dst.jpg
    删除图像中的所有元信息并添加评论
    (注意顺序很重要:“-comment ='lonely'-all =”
    也会删除新评论。)
exiftool -all = --jfif:全部dst.jpg
    从图像中删除除JFIF组以外的所有元信息。
exiftool -Photoshop:全部= dst.jpg
    从图像中删除Photoshop元信息(注意
    Photoshop信息还包括IPTC)。
exiftool -r -XMP-crss:all = DIR
    递归删除a中的图像中的所有XMP-crss信息
    目录。
exiftool'-ThumbnailImage <= thumb.jpg'dst.jpg
    从指定的文件中设置缩略图(注意:引号是
    以防止外壳重定向)。
exiftool'-JpgFromRaw <=%d%f_JFR.JPG'-ext NEF -r。
    递归地写入以“_JFR.JPG”结尾的文件名的JPEG图像
    添加到扩展名为“.NEF”的类似文件的JpgFromRaw标记中
    当前目录。 (这是“-JpgFromRaw”的倒数
    上面的“READING EXAMPLES”部分的命令)。
exiftool -DateTimeOriginal - ='0:0:0 1:30:0'dir
    调整目录“dir”中所有图像的原始日期/时间
    减去1小时30分钟。 (这相当于
    “-DateTimeOriginal- = 1.5”。请参阅Image :: ExifTool :: Shift.pl
    细节。)
exiftool -createdate + = 3 -modifydate + = 3 a.jpg b.jpg
    向两个CreateDate和ModifyDate时间戳添加3个小时
    图片。
exiftool -AllDates + = 1:30 -if'$ make eq“Canon”'dir
    移动DateTimeOriginal,CreateDate和ModifyDate的值
    将所有佳能影像转换1小时30分钟
    目录。 (AllDates标签作为这些的快捷方式提供
    三个标签,允许他们通过一个标签访问。)
exiftool -xmp:city = Kingston image1.jpg image2.nef
    将标签写入两个图像的XMP组。 (没有“xmp:”
    自从“City”存在以后,该标签将被写入IPTC组
    在这两种情况下,IPTC默认是首选。)
exiftool -LightSource - ='未知(0)'dst.tiff
    只有在值为0时才删除“LightSource”标签。
exiftool -whitebalance- = auto -WhiteBalance = tung dst.jpg
    只有之前为“自动”时,才将“WhiteBalance”设置为“Tungsten”。
exiftool -comment- = -comment ='新评论'a.jpg
    只有当图片还没有时才写新评论。
exiftool -o%d%f.xmp目录
    为“dir”中的所有图像创建XMP元信息数据文件。
exiftool -o test.xmp -owner = Phil -title ='XMP File'
    仅从命令中定义的标签创建XMP数据文件
    线。

更多命令查看exiftool -h
http://owl.phy.queensu.ca/~phil/exiftool/examples.html

6、使用ExifTool批量处理EXIF信息

如果要处理的文件太多,一张一张处理效率太低,ExifTool支持批量操作:

$ exiftool -artist=标签名称  /dirName    #批量写入dirName目录艺术家标签
$ exiftool -r -all= /dirName      #批量删除dirName及其子目录所有文件EXIF信息,-r表示递归处理子目录
$ exiftool -gps:all= /dirName     #批量删除dirName及其子目录所有文件gps信息

其它相关:

$ mdls  photo.jpg #这个命令显示指定文件的metadata的属性,当不能准确的获取exif信息

iOS端获取metadata
https://stackoverflow.com/questions/9766394/get-exif-data-from-uiimage-uiimagepickercontroller
https://stackoverflow.com/questions/16830180/how-to-get-exif-data-from-downloaded-image
测试发现,如果是网络webp图片,如果后缀是jpg或png不能准确获取Exif信息,系统相册没问题。

参考:
http://owl.phy.queensu.ca/~phil/exiftool/examples.html
https://zh.wikipedia.org/wiki/EXIF
https://baike.baidu.com/item/EXIF/422825

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342