¿Cómo puedo eliminar recursivamente la información EXIF de varios miles de archivos JPG?
¿Cómo puedo eliminar recursivamente la información EXIF de varios miles de archivos JPG?
Respuestas:
Las otras sugerencias de ExifTool son geniales si desea eliminar o cambiar secciones específicas. Pero si solo desea eliminar todos los metadatos por completo, use esto (desde la página de manual):
exiftool -all= dst.jpg
Delete all meta information from an image.
También puede usar jhead , con el indicador -de:
-de Delete the Exif header entirely. Leaves other metadata
sections intact.
Tenga en cuenta que en ambos casos, EXIF es solo un tipo de metadatos. Pueden estar presentes otras secciones de metadatos, y dependiendo de lo que desee hacer, ambos programas tienen diferentes opciones para preservar algunos o eliminarlos todos. Por ejemplo, jhead -purejpg
elimina toda la información que no se necesita para representar la imagen.
La herramienta de manejo EXIF exiv2
tiene un comando para eliminar datos EXIF:
exiv2 rm image.jpg
elimina todos los datos EXIF de la imagen.
Para eliminar datos EXIF de todas las imágenes JPEG en el directorio actual, use
exiv2 rm *.jpg
Para eliminar datos EXIF de todas las imágenes JPEG en el directorio actual y todos los subdirectorios de forma recursiva, use:
find . -type f -iname '*.jpg' | xargs exiv2 rm
Es una buena idea probar el comando antes.
Para ver qué archivos se encuentran:
find . -type f -iname '*.jpg' | less
Para ver qué comandos se ejecutarán:
find . -type f -iname '*.jpg' | xargs echo exiv2 rm | less
Tenga en cuenta lo echo
insertado antes exiv2
para imprimir el comando, en lugar de ejecutarlo.
Debes mirar algunas herramientas de código abierto como exiftool . Hay muchas opciones (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
Lo único que debe hacer a continuación es escribir un pequeño script que enumere sus archivos (jpg) y haga las cosas. Para eliminar el contenido de un campo, deberá establecerlo en "^"; como el siguiente ejemplo:
-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= ^
La sugerencia de Vincent de usar exiftool es buena. Le sugiero que escriba un script que acepte un solo argumento de un nombre de archivo, y ejecute las funciones de tira deseadas en eso. Luego, use find
para ejecutar este script en su conjunto de archivos. El guión se vería así:
#!/bin/sh
exiftool -overwrite_original -ExifFieldName=^ [-MoreExifFieldNames=^] $1
Digamos que guarda esto como /usr/local/bin/strip_exif.sh
, luego puede llamarlo yendo a la carpeta que tiene sus archivos jpeg como este:
find -type f -iname '*.jpg' -exec strip_exif.sh {} \;
Editar: después de ver la respuesta de mattdm sobre el argumento para eliminar todas las etiquetas, me imagino que puede omitir el script y usar el hallazgo de esta manera:
find -type f -iname '*.jpg' -exec exiftool -all= {} \;