Informações exif de exclusão em lote

16

Como posso remover recursivamente as informações EXIF ​​de vários milhares de arquivos JPG?

LanceBaynes
fonte

Respostas:

17

As outras sugestões do ExifTool são ótimas se você deseja remover ou alterar seções específicas. Mas se você deseja remover todos os metadados completamente, use este (na página de manual):

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

Você também pode usar jhead , com o sinalizador -de:

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

Observe que, nos dois casos, EXIF ​​é apenas um tipo de metadados. Outras seções de metadados podem estar presentes e, dependendo do que você deseja fazer, ambos os programas têm opções diferentes para preservar alguns ou remover tudo. Por exemplo, jhead -purejpgretira todas as informações não necessárias para renderizar a imagem.

mattdm
fonte
6

A ferramenta de manipulação EXIF exiv2possui um comando para excluir dados EXIF:

exiv2 rm image.jpg

remove todos os dados EXIF ​​da imagem.

Para remover dados EXIF ​​de todas as imagens JPEG no diretório atual, use

exiv2 rm *.jpg

Para remover dados EXIF ​​de todas as imagens JPEG no diretório atual e de todos os subdiretórios recursivamente, use:

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

É uma boa ideia testar o comando antes.

Para ver quais arquivos foram encontrados:

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

Para ver quais comandos serão executados:

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

Observe o echoinserido antes exiv2para imprimir o comando, em vez de executá-lo.

Volker Siegel
fonte
3

Você deve olhar para algumas ferramentas de código- fonte aberto como o exiftool . Há muitas opções (para 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

A única coisa que você deve fazer a seguir é escrever um pequeno script que lista seus arquivos (jpg) e faz as coisas. Para remover o conteúdo de um campo, você deverá defini-lo como "^"; como no exemplo a seguir:

-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= ^
Vincent Demeester
fonte
3

A sugestão de Vincent de usar o exiftool é boa. Eu sugiro que você escreva um script que aceite um único argumento de um nome de arquivo e execute as funções de tira desejadas. Em seguida, use findpara executar este script no seu conjunto de arquivos. O script seria algo parecido com isto:

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

Digamos que você salve isso como /usr/local/bin/strip_exif.sh, você pode chamá-lo indo para a pasta que possui seus arquivos jpeg assim:

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

Edit: Depois de ver a resposta do mattdm sobre o argumento de remover todas as tags, acho que você pode pular o script e usar a descoberta da seguinte maneira:

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