Just looked this up. Figure I'd share it here for future reference.
Install exiftool:
sudo apt-get install libimage-exiftool-perl
To read photo metadata:
exiftool /tmp/my_photo.jpg
To erase photo metadata:
exiftool -all= /tmp/my_photo.jpg
Before:
ExifTool Version Number : 8.60
File Name : my_photo.jpg
Directory : /tmp
File Size : 3.0 MB
File Modification Date/Time : 2013:02:24 12:08:10-08:00
File Permissions : rw-rw-r--
File Type : JPEG
MIME Type : image/jpeg
Exif Byte Order : Big-endian (Motorola, MM)
Orientation : Unknown (0)
Y Cb Cr Positioning : Centered
X Resolution : 72
Y Resolution : 72
Resolution Unit : inches
Modify Date : 2013:02:24 11:25:27
Make : Samsung
Camera Model Name : Galaxy Nexus
Exif Version : 0220
Flashpix Version :
Color Space : sRGB
Components Configuration : Y, Cb, Cr, -
Compressed Bits Per Pixel : 0
Exif Image Width : 1944
Exif Image Height : 2592
Date/Time Original : 2013:02:24 11:25:27
Create Date : 2013:02:24 11:25:27
Exposure Time : 1/354
F Number : 2.8
Exposure Program : Aperture-priority AE
ISO : 50, 0, 0
Shutter Speed Value : 1/353
Aperture Value : 2.6
Brightness Value : 0
Exposure Compensation : 0
Max Aperture Value : 2.6
Subject Distance : 0 m
Metering Mode : Multi-spot
Light Source : Daylight
Flash : No Flash
Focal Length : 3.4 mm
Flash Energy : 0
Exposure Index : undef
Sensing Method : One-chip color area
Scene Type : Directly photographed
Custom Rendered : Custom
Exposure Mode : Auto
White Balance : Auto
Digital Zoom Ratio : 1
Scene Capture Type : Standard
Contrast : Normal
Saturation : Normal
Sharpness : Normal
Subject Distance Range : Unknown
Image Unique ID : OAEL01
GPS Time Stamp : 19:25:27
GPS Date Stamp : 2013:02:24
Compression : JPEG (old-style)
Thumbnail Offset : 2143
Thumbnail Length : 10941
Image Width : 1944
Image Height : 2592
Encoding Process : Baseline DCT, Huffman coding
Bits Per Sample : 8
Color Components : 3
Y Cb Cr Sub Sampling : YCbCr4:2:0 (2 2)
Aperture : 2.8
GPS Date/Time : 2013:02:24 19:25:27Z
Image Size : 1944x2592
Shutter Speed : 1/354
Thumbnail Image : (Binary data 10941 bytes, use -b option to extract)
Focal Length : 3.4 mm
Light Value : 12.4
After:
ExifTool Version Number : 8.60
File Name : my_photo.jpg
Directory : /tmp
File Size : 2.9 MB
File Modification Date/Time : 2013:02:24 12:21:39-08:00
File Permissions : rw-rw-r--
File Type : JPEG
MIME Type : image/jpeg
Image Width : 1944
Image Height : 2592
Encoding Process : Baseline DCT, Huffman coding
Bits Per Sample : 8
Color Components : 3
Y Cb Cr Sub Sampling : YCbCr4:2:0 (2 2)
Image Size : 1944x2592
References:
-
1To process all files in the current directory:
for f in *.jpg; do exiftool -all= "$f"; done
– twobeers Jun 23 '14 at 9:38 -
8
Imagemagick
Instead of Exiftool, to handle Exif metadata I found Imagemagick more useful and command easier to remember:
To read
identify -verbose image.jpg | grep exif
To remove
With imagemagick
package installed you can do this (not only for JPEGs):
mogrify -strip *.jpg
From manual:
-strip
strip the image of any profiles, comments or these PNG chunks: bKGD, cHRM, EXIF, gAMA, iCCP, iTXt, sRGB, tEXt, zCCP, zTXt, date.
AFAIK the only difference with exiftool is that mogrify
won't remove this metadata:
- JFIF Version
- Resolution Unit
- X Resolution
- Y Resolution
Which might be useful. Compared with diff -y <(exiftool wMogrify.jpg) <(exiftool wExiftool.jpg)
Remove EXIF data is not the same as anonymize: -strip
will recompress the image. This might be a good thing: The same software that take the photo could hide data on the image (steganography). I'm not sure if the recompression will always remove everything (probably not). To avoid this recompresion you can use jpegtran:
jpegtran -copy none image.jpg > newimage.jpg
Also, to avoid losing color profile (ICC, which causes richer colors[citation needed]):
convert image.jpg profile.icm && convert image.jpg -strip -profile profile.icm newimage.jpg
You might ask yourself if these costs are noticeable or relevant in your case.
Another tool about steganography on images is steghide.
If you prefer Exiftool, you might find useful creating an alias to
exiftool -all= *.jpg && rm *original
, or with-overwrite_original
option. To remove only GPS data useexiftool -gps:all= -xmp:geotag= *.jpg
.WebP format:
webp
package provideswebpmux
command, which manage XMP/EXIF metadata and ICC profile.Another alternative (only for JPEGs) is
jhead
.
See also
-
Note however that this appears to recompress the image: stackoverflow.com/questions/2654281/… – Ciro Santilli新疆棉花TRUMP BAN BAD Sep 6 '19 at 21:44
-
1@CiroSantilli新疆改造中心996ICU六四事件I edited the answer. That' might be a good thing, to remove metadata encoded on the image. Would be great to have studies to support this. – Pablo Bianchi Sep 21 '19 at 18:05
-
Yes, I noticed this because the image size had changed considerably, but there must be better ways, at least in 2010 ImageMagick devs confirmed it: stackoverflow.com/questions/2654281/… – Ciro Santilli新疆棉花TRUMP BAN BAD Sep 21 '19 at 19:01
To remove then change a single field we can use this command:
exiftool -Copyright= IMG_3357.jpg
exiftool -Copyright=LinuxSlaves IMG_3357.jpg
I wish to add mat2
which support not only images. It's recommended by privacytools.io community.
MAT2 is free software, which allows the removal of metadata of image, audio, torrent, and document file types. It provides both a command line tool and a graphical user interface via an extension for Nautilus, the default file manager of GNOME.
and
mat2 is a metadata removal tool, supporting a wide range of commonly used file formats, written in python3: at its core, it's a library, used by an eponymous command-line interface, as well as several file manager extensions.
sudo apt install mat2
in-place purge of metadata
mat2 -s xxx.mp4
mat2 -s xxx.png
There are a number of tools for this, as others have listed. One more that I found on my system is exiv2
.
Install: sudo apt-get install exiv2
View: exiv2 myimage.jpg
Remove: exiv2 rm myimage.jpg
Additional options are listed in the man page.
sudo apt-get install exiv2
and thenexiv2 rm *.jpg
– Nav 13 hours ago