在 Linux 命令行中删除 Exif 数据

大多数图像都包含 Exif(可交换图像文件格式)数据,其中包括一些关键数据,例如捕获图像的日期和时间、设备、地点等。

虽然这在各种情况下都很有用,但它也存在隐私威胁,通过本指南,我将向您展示如何使用 Linux 命令行从图像中删除 Exif 数据。

方法一:使用ExifTool

因此,如果您正在寻找一种可以通过各种选项删除不应用任何图像压缩的 Exif 数据的方法,那么这应该是您的首选。

因此,让我们从安装各种发行版开始:

对于 Debian 衍生产品:

sudo apt install libimage-exiftool-perl

对于基于 RHEL 的发行版:

sudo dnf install perl-Image-ExifTool

对于基于 Arch 的发行版:

sudo pacman -S perl-image-exiftool

如果您在其他平台上,例如 Gentoo,您可以从头开始构建 ExifTool 这里。

ExifTool 还可用于查看与图像相关的元数据。 要列出所有详细信息,您必须使用给定的命令语法:

exiftool <image.jpg>
图片的Exif数据

从图像中删除元数据

有一个 图像元数据和exif数据的区别. 元数据包括详细信息,例如文件的创建者、文件的用途和评论(如果有)。

exif 数据仅包含有关数字图像的详细信息,例如大小、位置、用于创建/修改的软件等。

从图像中删除元数据也会删除 exif 数据。

要删除元数据,您必须使用 -the all 选项。 它将创建一个没有元数据的图像副本,并且原始文件将被重命名,并在文件末尾附加“_original”。

exiftool -all= <image.jpg>
没有元数据的新图像文件和重命名用于备份的旧文件

让我们再次使用 exif 命令列出我们新文件的 exif 数据。

获取特定图像的exif数据获取特定图像的exif数据

如您所见,我已设法从图像中删除 exif 数据,并且由于不涉及压缩,因此大小没有减少。

如果你想怎么办 删除图像的元数据而不创建新副本 并想修改原始图像? 使用 -overwrite_original 选项。

exiftool -overwrite_original -all= <image.jpg>
覆盖对原始文件的更改仅将更改应用于原始文件

从整个目录中删除元数据

如果要删除包含图像的整个目录的元数据,此命令将派上用场。 让我告诉你怎么做。

要从整个目录中删除元数据,您必须使用 -recurse 选项,该选项将指示 ExifTool 遍历子目录。

它会复制原始文件并从复制的文件中删除元数据,原始文件将被重命名,并在其末尾附加“_original”。

exiftool -recurse -all= <path of directory>
删除当前目录中存在的每个图像的元数据删除目录中存在的每个图像的元数据

仅删除 Exif 数据

因此,如果您正在寻找一种只能删除 exif 数据的方法,您只需在命令中稍作更改即可。

要仅删除 exif 数据,您必须使用 -EXIF 选项,如下所示:

exiftool -EXIF= <image.jpg>

现在,让我向您展示仅删除 exif 数据时剩下的内容:

删除 exif 数据后剩余的元数据删除 exif 数据后的剩余信息

方法二:使用 ImageMagick

与为删除元数据和 exif 数据而创建的 exif 工具不同, ImageMagick 不仅仅是为了提取图像数据,所以你不会得到我上面显示的那么多选项。

Less 选项不会影响它的功能并且可以很好地完成它的工作,对于那些只想以最简单的方式删除 exif 数据的人来说,这是一个完美的选择。

所以让我们跳到ImageMagick的安装。

对于 Debian 衍生产品:

sudo apt-get install imagemagick

对于基于 RHEL 的发行版:

sudo dnf install imagemagick

对于基于 Arch 的发行版:

sudo pacman -S imagemagick

完成安装后,让我们看看如何从 ImageMagick 中列出图像详细信息。

要列出 exif 数据,您必须遵循给定的命令语法:

identify -format '%[EXIF:*]' <image.jpeg>
ImageMagick 工具列出图像的 exif 数据使用 ImageMagick 获取图片的 exif 数据

要删除 exif 数据,您必须将 -strip 选项与 mogrify 一起使用,如下所示:

mogrify -strip <image.jpeg>

删除 exif 数据后,我将运行前面的命令来交叉检查我是否已成功删除 exif 数据。

identify -format '%[EXIF:*]' <image.jpeg>
使用 ImageMagick 从图像中删除 exif 数据后的最终结果图片上没有exif数据

它不会显示任何输出,因为没有与 exif 相关的数据。

同样,您也可以在整个目录上使用此命令。 与第一种方法不同,您不能只分配目录的路径,它必须是您当前的工作目录。

然后你必须应用给定的命令:

mogrify -strip *

最后的话

两种方法都可以很好地工作,首先是与各种选项捆绑在一起,而第二种方法是 ImageMagick 的有前途的功能之一。

但是在这两种情况下,它们都可以正常工作并且可以毫无问题地使用。