あまり写真とか撮らないのだけど、ふとLinuxのコンソール上で画像データのEXIF情報を取得するにはどうすれば良いのかなと思ったので調べてみたところ、ImageMagickを使ってやることで、コンソール上からファイルのEXIF情報を取得・削除といった事が可能なようだ。 ImageMagickは、CentOSならyum、Ubuntuであればaptからインストールができる。

bash
sudo apt install imagemagick sudo yum install ImageMagick

EXIF情報を確認する

インストール後、以下のコマンドでファイルのEXIF情報を取得することができる。 今回は、手元にEXIF情報のあるファイルがないのでこちらのサンプル画像を利用させてもらった。

bash
identify -verbose ファイルPATH
shell
[root@BS-PUB-CENT7-01 ~]# wget http://www.ksky.ne.jp/~yamama/jpggpsmap/sample/AkihabaraKousaten.JPG --2017-08-06 04:43:36-- http://www.ksky.ne.jp/~yamama/jpggpsmap/sample/AkihabaraKousaten.JPG www.ksky.ne.jp (www.ksky.ne.jp) をDNSに問いあわせています... 210.233.190.84 www.ksky.ne.jp (www.ksky.ne.jp)|210.233.190.84|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 548570 (536K) [image/jpeg] `AkihabaraKousaten.JPG' に保存中 100%[===================================================================================================================================================================================================>] 548,570 --.-K/s 時間 0.05s 2017-08-06 04:43:36 (11.4 MB/s) - `AkihabaraKousaten.JPG' へ保存完了 [548570/548570] [root@BS-PUB-CENT7-01 ~]# identify -verbose ./AkihabaraKousaten.JPG Image: ./AkihabaraKousaten.JPG Format: JPEG (Joint Photographic Experts Group JFIF format) Class: DirectClass Geometry: 1200x1600+0+0 Resolution: 72x72 Print size: 16.6667x22.2222 Units: PixelsPerInch Type: TrueColor Endianess: Undefined Colorspace: sRGB Depth: 8-bit Channel depth: red: 8-bit green: 8-bit blue: 8-bit Channel statistics: Red: min: 0 (0) max: 255 (1) mean: 92.9754 (0.364609) standard deviation: 62.7977 (0.246266) kurtosis: 0.812823 skewness: 1.30089 Green: min: 0 (0) max: 255 (1) mean: 94.5935 (0.370955) standard deviation: 64.6191 (0.253408) kurtosis: 0.690189 skewness: 1.36728 Blue: min: 0 (0) max: 255 (1) mean: 104.32 (0.409098) standard deviation: 68.8523 (0.270009) kurtosis: -0.114506 skewness: 1.09011 Image statistics: Overall: min: 0 (0) max: 255 (1) mean: 97.2963 (0.381554) standard deviation: 65.4722 (0.256754) kurtosis: 0.464047 skewness: 1.26142 Rendering intent: Perceptual Gamma: 0.454545 Chromaticity: red primary: (0.64,0.33) green primary: (0.3,0.6) blue primary: (0.15,0.06) white point: (0.3127,0.329) Interlace: None Background color: white Border color: srgb(223,223,223) Matte color: grey74 Transparent color: black Compose: Over Page geometry: 1200x1600+0+0 Dispose: Undefined Iterations: 0 Compression: JPEG Quality: 92 Orientation: Undefined Properties: date:create: 2017-08-06T04:43:36+09:00 date:modify: 2008-07-09T22:31:13+09:00 exif:ApertureValue: 30/10 exif:BrightnessValue: -1/-1 exif:ColorSpace: 1 exif:ComponentsConfiguration: 1, 2, 3, 0 exif:Compression: 6 exif:Contrast: 0 exif:CustomRendered: 0 exif:DateTime: 2008:07:04 21:01:52 exif:DateTimeDigitized: 2008:07:04 21:01:52 exif:DateTimeOriginal: 2008:07:04 21:01:52 exif:DigitalZoomRatio: 100/100 exif:ExifImageLength: 1600 exif:ExifImageWidth: 1200 exif:ExifOffset: 350 exif:ExifVersion: 48, 50, 50, 48 exif:ExposureMode: 0 exif:Flash: 24 exif:FlashPixVersion: 48, 49, 48, 48 exif:FNumber: 30/10 exif:FocalLength: 477/100 exif:FocalLengthIn35mmFilm: 28 exif:GPSInfo: 660 exif:GPSLatitude: 35/1, 41/1, 5920/100 exif:GPSLatitudeRef: N exif:GPSLongitude: 139/1, 46/1, 1812/100 exif:GPSLongitudeRef: E exif:GPSMapDatum: WGS-84 exif:GPSVersionID: 2, 2, 0, 0 exif:ImageDescription: SA390017 exif:JPEGInterchangeFormat: 888 exif:JPEGInterchangeFormatLength: 6623 exif:LightSource: 0 exif:Make: KDDI-SA exif:MaxApertureValue: 30/10 exif:MeteringMode: 1 exif:Model: W51SA exif:ResolutionUnit: 2 exif:Saturation: 0 exif:SceneCaptureType: 0 exif:SceneType: 1 exif:Sharpness: 0 exif:SubjectDistance: 0/0 exif:SubjectDistanceRange: 0 exif:WhiteBalance: 0 exif:XResolution: 72/1 exif:YCbCrPositioning: 1 exif:YResolution: 72/1 jpeg:colorspace: 2 jpeg:sampling-factor: 1x2,1x1,1x1 signature: ed4f58a3429273fc4d64fe40d616bf77b0805723db5170a16684fafba37f8fb3 unknown: 65, 83, 67, 73, 73, 0, 0, 0, 71, 80, 83, 45, 70, 73, 88 Profiles: Profile-exif: 7517 bytes Artifacts: filename: ./AkihabaraKousaten.JPG verbose: true Tainted: False Filesize: 549KB Number pixels: 1.92M Pixels per second: 64MB User time: 0.040u Elapsed time: 0:01.030 Version: ImageMagick 6.7.8-9 2016-06-16 Q16 http://www.imagemagick.org [root@BS-PUB-CENT7-01 ~]# identify -verbose ./AkihabaraKousaten.JPG | grep 'exif:' exif:ApertureValue: 30/10 exif:BrightnessValue: -1/-1 exif:ColorSpace: 1 exif:ComponentsConfiguration: 1, 2, 3, 0 exif:Compression: 6 exif:Contrast: 0 exif:CustomRendered: 0 exif:DateTime: 2008:07:04 21:01:52 exif:DateTimeDigitized: 2008:07:04 21:01:52 exif:DateTimeOriginal: 2008:07:04 21:01:52 exif:DigitalZoomRatio: 100/100 exif:ExifImageLength: 1600 exif:ExifImageWidth: 1200 exif:ExifOffset: 350 exif:ExifVersion: 48, 50, 50, 48 exif:ExposureMode: 0 exif:Flash: 24 exif:FlashPixVersion: 48, 49, 48, 48 exif:FNumber: 30/10 exif:FocalLength: 477/100 exif:FocalLengthIn35mmFilm: 28 exif:GPSInfo: 660 exif:GPSLatitude: 35/1, 41/1, 5920/100 exif:GPSLatitudeRef: N exif:GPSLongitude: 139/1, 46/1, 1812/100 exif:GPSLongitudeRef: E exif:GPSMapDatum: WGS-84 exif:GPSVersionID: 2, 2, 0, 0 exif:ImageDescription: SA390017 exif:JPEGInterchangeFormat: 888 exif:JPEGInterchangeFormatLength: 6623 exif:LightSource: 0 exif:Make: KDDI-SA exif:MaxApertureValue: 30/10 exif:MeteringMode: 1 exif:Model: W51SA exif:ResolutionUnit: 2 exif:Saturation: 0 exif:SceneCaptureType: 0 exif:SceneType: 1 exif:Sharpness: 0 exif:SubjectDistance: 0/0 exif:SubjectDistanceRange: 0 exif:WhiteBalance: 0 exif:XResolution: 72/1 exif:YCbCrPositioning: 1 exif:YResolution: 72/1 Profile-exif: 7517 bytes

上記コマンドだと大量のデータが取得されるため、必要な箇所(カメラなどのモデルや緯度、経度といったGPS情報)のみを表示させる場合は、以下のようにformatを指定してやればいい。

bash
identify -format "Make:%[EXIF:Make]\nModel:%[EXIF:Model]\nDate:%[EXIF:DateTime]\n緯度:%[EXIF:GPSLatitude]\n経度:%[EXIF:GPSLongitude]" ファイルPATH
shell
[root@BS-PUB-CENT7-01 ~]# identify -format "Make:%[EXIF:Make]\nModel:%[EXIF:Model]\nDate:%[EXIF:DateTime]\n緯度:%[EXIF:GPSLatitude]\n経度:%[EXIF:GPSLongitude]" ./AkihabaraKousaten.JPG Make:KDDI-SA Model:W51SA Date:2008:07:04 21:01:52 緯度:35/1, 41/1, 5920/100 経度:139/1, 46/1, 1812/100

EXIF情報を削除する

EXIF情報を削除する場合、convertコマンドで別のファイルに書き出すか、もしくはmogrifyコマンドで直接ファイルを変更することが可能だ。

bash
convert -strip 元ファイル コピー先ファイル
shell
[root@BS-PUB-CENT7-01 ~]# convert -strip ./AkihabaraKousaten.JPG ./AkihabaraKousaten.JPG.strip [root@BS-PUB-CENT7-01 ~]# identify -verbose ./AkihabaraKousaten.JPG.strip Image: ./AkihabaraKousaten.JPG.strip Format: JPEG (Joint Photographic Experts Group JFIF format) Class: DirectClass Geometry: 1200x1600+0+0 Resolution: 72x72 Print size: 16.6667x22.2222 Units: PixelsPerInch Type: TrueColor Endianess: Undefined Colorspace: sRGB Depth: 8-bit Channel depth: red: 8-bit green: 8-bit blue: 8-bit Channel statistics: Red: min: 0 (0) max: 255 (1) mean: 92.9628 (0.36456) standard deviation: 62.8308 (0.246395) kurtosis: 0.809192 skewness: 1.29937 Green: min: 0 (0) max: 255 (1) mean: 94.58 (0.370902) standard deviation: 64.61 (0.253373) kurtosis: 0.688694 skewness: 1.36622 Blue: min: 0 (0) max: 255 (1) mean: 104.273 (0.408912) standard deviation: 68.8235 (0.269896) kurtosis: -0.116854 skewness: 1.08713 Image statistics: Overall: min: 0 (0) max: 255 (1) mean: 97.2718 (0.381458) standard deviation: 65.4697 (0.256744) kurtosis: 0.460821 skewness: 1.2593 Rendering intent: Perceptual Gamma: 0.454545 Chromaticity: red primary: (0.64,0.33) green primary: (0.3,0.6) blue primary: (0.15,0.06) white point: (0.3127,0.329) Interlace: None Background color: white Border color: srgb(223,223,223) Matte color: grey74 Transparent color: black Compose: Over Page geometry: 1200x1600+0+0 Dispose: Undefined Iterations: 0 Compression: JPEG Quality: 92 Orientation: Undefined Properties: date:create: 2017-08-06T05:12:41+09:00 date:modify: 2017-08-06T05:12:41+09:00 jpeg:colorspace: 2 jpeg:sampling-factor: 1x2,1x1,1x1 signature: ac1086147cdc50ba6dede52f12f1c135a26da23717bf44955166f8274634ef28 Artifacts: filename: ./AkihabaraKousaten.JPG.strip verbose: true Tainted: False Filesize: 434KB Number pixels: 1.92M Pixels per second: 48MB User time: 0.040u Elapsed time: 0:01.039 Version: ImageMagick 6.7.8-9 2016-06-16 Q16 http://www.imagemagick.org [root@BS-PUB-CENT7-01 ~]# mogrify -strip ./AkihabaraKousaten.JPG [root@BS-PUB-CENT7-01 ~]# identify -verbose ./AkihabaraKousaten.JPG Image: ./AkihabaraKousaten.JPG Format: JPEG (Joint Photographic Experts Group JFIF format) Class: DirectClass Geometry: 1200x1600+0+0 Resolution: 72x72 Print size: 16.6667x22.2222 Units: PixelsPerInch Type: TrueColor Endianess: Undefined Colorspace: sRGB Depth: 8-bit Channel depth: red: 8-bit green: 8-bit blue: 8-bit Channel statistics: Red: min: 0 (0) max: 255 (1) mean: 92.9628 (0.36456) standard deviation: 62.8308 (0.246395) kurtosis: 0.809192 skewness: 1.29937 Green: min: 0 (0) max: 255 (1) mean: 94.58 (0.370902) standard deviation: 64.61 (0.253373) kurtosis: 0.688694 skewness: 1.36622 Blue: min: 0 (0) max: 255 (1) mean: 104.273 (0.408912) standard deviation: 68.8235 (0.269896) kurtosis: -0.116854 skewness: 1.08713 Image statistics: Overall: min: 0 (0) max: 255 (1) mean: 97.2718 (0.381458) standard deviation: 65.4697 (0.256744) kurtosis: 0.460821 skewness: 1.2593 Rendering intent: Perceptual Gamma: 0.454545 Chromaticity: red primary: (0.64,0.33) green primary: (0.3,0.6) blue primary: (0.15,0.06) white point: (0.3127,0.329) Interlace: None Background color: white Border color: srgb(223,223,223) Matte color: grey74 Transparent color: black Compose: Over Page geometry: 1200x1600+0+0 Dispose: Undefined Iterations: 0 Compression: JPEG Quality: 92 Orientation: Undefined Properties: date:create: 2017-08-06T05:19:13+09:00 date:modify: 2017-08-06T05:19:13+09:00 jpeg:colorspace: 2 jpeg:sampling-factor: 1x2,1x1,1x1 signature: ac1086147cdc50ba6dede52f12f1c135a26da23717bf44955166f8274634ef28 Artifacts: filename: ./AkihabaraKousaten.JPG verbose: true Tainted: False Filesize: 434KB Number pixels: 1.92M Pixels per second: 64MB User time: 0.020u Elapsed time: 0:01.029 Version: ImageMagick 6.7.8-9 2016-06-16 Q16 http://www.imagemagick.org