如何在不重新压缩JPEG的情况下删除EXIF数据?

Den*_*aia 114 unix jpeg exif imagemagick

我想从JPEG文件中删除EXIF信息(包括缩略图,元数据,相机信息......一切!),但我不想重新压缩它,因为重新压缩JPEG会降低质量,并且通常会增加文件大小.

我正在寻找一个Unix/Linux解决方案,如果使用命令行更好.如果可能,使用ImageMagick(转换工具).如果那是不可能的,那么一个小的Python,Perl,PHP(或Linux上的其他通用语言)脚本就可以了.

有一个类似的问题,但与.NET有关.

chr*_*ris 151

exiftool为我工作,它是用perl编写的,所以应该在任何o/s上为你工作

http://www.sno.phy.queensu.ca/~phil/exiftool

用法:

exiftool -all= image.jpg
Run Code Online (Sandbox Code Playgroud)

  • 使用选项-all =接受的用法将从您的image.jpg中删除所有标签!正确的答案是`exiftool -EXIF = image.jpg` (9认同)
  • 其他一些有趣的选项:" - o outfile.jpg"或"-out outfile.jpg"," - overwrite_original"或"-overwrite_original_in_place"," - P"或"-preserve"," - r"或"-recurse" (6认同)
  • 我刚刚遇到这个线程寻找同样的事情.我只是想在这里为Ubuntu用户添加评论:该脚本在Ubuntu repos中以libimage-exiftool-perl的形式提供:`sudo apt-get install libimage-exiftool-perl` (6认同)
  • 或者使用自制软件`brew install exiftool` (6认同)
  • 如果你真的**信任该程序添加`-overwrite_original`开关,程序将不会创建备份文件. (5认同)
  • @PeterCo 从技术上讲,Exif 数据可以嵌入到 XMP 中(而 GIF 图像仅支持 XMP)。如果您要剥离 Exif,那么您很有可能还想剥离 XMP 和 IPTC,尽管可能不是 ICC 配置文件(这就是剥离“全部”时会发生的情况)。 (2认同)

Jay*_*ayM 81

使用imagemagick:

convert <input file> -strip <output file>
Run Code Online (Sandbox Code Playgroud)

  • 抱歉,但-strip无法正常工作,因为ImageMagick仍会重新压缩JPEG文件. (19认同)
  • +1因为这比下载新工具更容易. (15认同)
  • 注意`-strip`删除颜色配置文件.对于试图在不丢失配置文件信息的情况下删除EXIF数据的任何人,请在此处查看我的解决方案:http://stackoverflow.com/a/17516878/1854499 (13认同)
  • 顺便提一下,如果有人正在对文件进行其他转换,那么"-strip"可能会很有用.另请注意,"-thumbnail 123x456"几乎相当于"-strip -resize 123x456". (4认同)
  • 当尝试使用 ImageMagick 剥离 exif 数据时,我注意到最终得到的文件比开始时的文件更大。这让我相信 Imagemagick 正在对您想要删除的数据进行编码,并将其存储在文件中的其他位置。你可以说我是老式的,但是当我从文件中删除某些内容时,我希望文件大小即使大小不同也能更小。任何其他结果都表明数据挖掘。 (3认同)
  • OP应该更新这个答案,因为它错了两次. (2认同)

Den*_*aia 48

ImageMagick具有-strip参数,但在保存之前会重新压缩图像.因此,这个参数对我的需求毫无用处.

来自ImageMagick论坛的这个主题解释了ImageMagick中不支持JPEG无损操作(每当更改时,请发布带有链接的评论!),并建议使用jpegtran(来自libjpeg):

jpegtran -copy none image.jpg > newimage.jpg
jpegtran -copy none -outfile newimage.jpg image.jpg
Run Code Online (Sandbox Code Playgroud)

(如果您不知道我的回答我的问题,阅读这个这个这个)


Bog*_*scu 28

您可能还想查看Exiv2 - 它非常快(C++ 并且没有重新压缩),它是命令行,它还提供了一个可以链接的EXIF操作库.我不知道有多少Linux发行版可供使用,但在CentOS中它目前在基础仓库中可用.

用法:

exiv2 rm image.jpg
Run Code Online (Sandbox Code Playgroud)


Vas*_*kov 20

我建议jhead:

man jhead
jhead -purejpg image.jpg
Run Code Online (Sandbox Code Playgroud)
  • debian(/ ubuntu)上的软件包大小只有123Kb
  • 它没有损失质量,因为它不会重新压缩
  • 程序会改变图像,因此如果需要,最好进行备份