Batch delete exif info

16

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

    
por LanceBaynes 16.05.2011 / 12:02

4 respostas

17

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

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

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

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

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

    
por 16.05.2011 / 15:49
4

Você deve procurar algumas ferramentas de código aberto, como exiftool . Existe muita opção (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 em seguida é escrever um pequeno script que lista seus arquivos (jpg) e faz o material. Para remover o conteúdo de um campo, você terá que configurá-lo para "^"; como o 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= ^
    
por 16.05.2011 / 12:14
4

A ferramenta de manipulação EXIF exiv2 tem 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 dele recursivamente, use:

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

É uma boa ideia testar o comando antes.

Para ver quais arquivos são 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 echo inserido antes de exiv2 para imprimir o comando, em vez de executá-lo.

    
por 03.09.2014 / 07:23
3

A sugestão de usar o exiftool de Vincent é 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 nele. Em seguida, use find para executar este script no seu conjunto de arquivos. O script seria algo como isto:

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

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

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

Editar: depois de ver resposta de mattdm sobre o argumento para striping all tags, eu acho que você pode pular o script e usar o find assim:

find -type f -iname '*.jpg' -exec exiftool -all= {} \;
    
por 16.05.2011 / 13:15