批量删除exif信息

批量删除exif信息

如何从数千个 JPG 文件中递归删除 EXIF 信息?

答案1

如果您想删除或更改特定部分,其他 ExifTool 建议非常有用。但如果您想完全删除所有元数据,请使用此命令(来自手册页):

   exiftool -all= dst.jpg
        Delete all meta information from an image.

你也可以使用杰头,带有 -de 标志:

   -de    Delete the Exif header entirely.  Leaves  other  metadata
          sections intact.

请注意,在这两种情况下,EXIF 只是元数据的一种类型。可能存在其他元数据部分,并且根据您想要执行的操作,这两个程序都有不同的选项来保留部分或全部删除。例如,jhead -purejpg去除渲染图像不需要的所有信息。

答案2

EXIF 处理工具exiv2有一个删除 EXIF 数据的命令:

exiv2 rm image.jpg

从图像中删除所有 EXIF 数据。

要从当前目录中的所有 JPEG 图像中删除 EXIF 数据,请使用

exiv2 rm *.jpg

要递归地从当前目录及其所有子目录中的所有 JPEG 图像中删除 EXIF 数据,请使用:

find . -type f -iname '*.jpg' | xargs exiv2 rm

最好先测试该命令。

要查看找到了哪些文件:

find . -type f -iname '*.jpg' | less

查看将执行哪些命令:

find . -type f -iname '*.jpg' | xargs echo exiv2 rm | less

请注意echo之前插入的内容exiv2是打印命令,而不是运行它。

答案3

您应该查看一些开源工具,例如出口工具。有很多选项(对于 exif、xmp、iptc)。

exiftool -overwrite_original \
-xmp:Creator='votre nom' \
-xmp:WebStatement='http://creativecommons.org/licenses/by-nc-nd/3.0/' \
-xmp:Rights='Copyright votre nom. This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0  License.' \
-iptc:By-line='votre nom' \
-iptc:CopyrightNotice='Copyright votre nom. This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0  License.' \
-exif:Artist='votre nom' \
-exif:Copyright='Copyright votre nom. This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0  License.' \
votre_fichier.jpg

接下来您唯一应该做的就是编写一个小脚本来列出您的文件 (jpg) 并执行这些操作。要删除字段的内容,您必须将其设置为“^”;就像下面的例子:

-Software= ^
-ModifyDate= ^
-CreatorTool= ^
-MetadataDate= ^
-Rating= ^
-ImageNumber= ^
-WhiteBalance= ^
-Temperature= ^
-Tint= ^
-IncrementalTemperature= ^
-IncrementalTint= ^
-Exposure= ^
-Shadows= ^
-Brightness= ^
-Contrast= ^
-Saturation= ^
-Sharpness= ^
-LuminanceSmoothing= ^
-ColorNoiseReduction= ^
-ChromaticAberrationR= ^
-ChromaticAberrationB= ^
-VignetteAmount= ^
-VignetteMidpoint= ^
-ShadowTint= ^
-RedHue= ^
-RedSaturation= ^-GreenHue= ^
-GreenSaturation= ^
-BlueHue= ^
-BlueSaturation= ^
-FillLight= ^
-Vibrance= ^
-HighlightRecovery= ^
-Clarity= ^
-Defringe= ^
-HueAdjustmentRed= ^
-HueAdjustmentOrange= ^
-HueAdjustmentYellow= ^
-HueAdjustmentGreen= ^
-HueAdjustmentAqua= ^
-HueAdjustmentBlue= ^
-HueAdjustmentPurple= ^
-HueAdjustmentMagenta= ^
-SaturationAdjustmentRed= ^
-SaturationAdjustmentOrange= ^
-SaturationAdjustmentYellow= ^
-SaturationAdjustmentGreen= ^
-SaturationAdjustmentAqua= ^
-SaturationAdjustmentBlue= ^
-SaturationAdjustmentPurple= ^
-SaturationAdjustmentMagenta= ^
-LuminanceAdjustmentRed= ^
-LuminanceAdjustmentOrange= ^
-LuminanceAdjustmentYellow= ^
-LuminanceAdjustmentGreen= ^
-LuminanceAdjustmentAqua= ^
-LuminanceAdjustmentBlue= ^
-LuminanceAdjustmentPurple= ^
-LuminanceAdjustmentMagenta= ^
-SplitToningShadowHue= ^
-SplitToningShadowSaturation= ^
-SplitToningHighlightHue= ^
-SplitToningHighlightSaturation= ^
-SplitToningBalance= ^
-ParametricShadows= ^
-ParametricDarks= ^
-ParametricLights= ^
-ParametricHighlights= ^
-ParametricShadowSplit= ^
-ParametricMidtoneSplit= ^
-ParametricHighlightSplit= ^
-SharpenRadius= ^
-SharpenDetail= ^
-SharpenEdgeMasking= ^
-ConvertToGrayscale= ^
-ToneCurveName= ^
-CameraProfile= ^
-HasSettings= ^
-CropTop= ^
-CropLeft= ^
-CropBottom= ^
-CropRight= ^
-CropAngle= ^
-CropWidth= ^
-CropHeight= ^
-CropUnit= ^
-HasCrop= ^
-AlreadyApplied= ^
-ToneCurve= ^
-CameraProfile= ^
-ApplicationRecordVersion= ^

答案4

文森特的使用exiftool的建议很好。我建议您编写一个接受文件名的单个参数的脚本,并在其上运行您想要的剥离函数。然后用于find在您的文件集上执行此脚本。该脚本看起来像这样:

#!/bin/sh
exiftool -overwrite_original -ExifFieldName=^ [-MoreExifFieldNames=^] $1

假设您将其保存为/usr/local/bin/strip_exif.sh,然后您可以通过转到包含 jpeg 文件的文件夹来调用它,如下所示:

find -type f -iname '*.jpg' -exec strip_exif.sh {} \;

编辑:看到后马特姆的回答关于剥离所有标签的参数,我认为您可以跳过脚本并仅使用这样的查找:

find -type f -iname '*.jpg' -exec exiftool -all= {} \;

相关内容