Quiero eliminar la información EXIF (incluida la miniatura, los metadatos, la información de la cámara ... ¡todo!) De los archivos JPEG, pero no quiero volver a comprimirla, ya que volver a comprimir el JPEG degradará la calidad y, por lo general, aumentará tamaño del archivo.
Estoy buscando una solución Unix / Linux, incluso mejor si uso la línea de comandos. Si es posible, use ImageMagick (herramienta de conversión). Si eso no es posible, un pequeño script Python, Perl, PHP (u otro lenguaje común en Linux) estaría bien.
Hay una pregunta similar, pero relacionada con .NET .
unix
imagemagick
jpeg
exif
Denilson Sá Maia
fuente
fuente
Respuestas:
Exiftool hace el trabajo por mí, está escrito en perl, así que debería funcionar para usted en cualquier o / s
https://exiftool.org/
uso:
fuente
sudo apt-get install libimage-exiftool-perl
brew install exiftool
-overwrite_original
interruptor y el programa no creará los archivos de respaldo.exiftool -EXIF= image.jpg
Con imagemagick:
fuente
-strip
elimina los perfiles de color. Para cualquiera que intente eliminar datos EXIF sin perder información de perfil, vea mi solución aquí: stackoverflow.com/a/17516878/1854499ImageMagick tiene el parámetro -strip , pero vuelve a comprimir la imagen antes de guardarla. Por lo tanto, este parámetro es inútil para mi necesidad.
Este tema del foro ImageMagick explica que no hay soporte para operaciones JPEG sin pérdida en ImageMagick (cada vez que esto cambie, ¡publique un comentario con un enlace!), Y sugiere usar jpegtran (de libjpeg):
(Si no está seguro de que responda mi propia pregunta, lea esto y esto y esto )
fuente
jpegtran -copy none image.jpg newimage.jpg
-progressive
Esto reducirá el tamaño.También es posible que desee examinar Exiv2 : es realmente rápido (C ++ y sin recompresión), es la línea de comandos y también proporciona una biblioteca para la manipulación EXIF con la que puede vincular. No sé cuántas distribuciones de Linux lo hacen disponible, pero en CentOS actualmente está disponible en el repositorio base.
Uso:
fuente
Yo propondría
jhead
:Solo 123Kb en debian / ubuntu, no se vuelve a comprimir. Sin embargo, tenga en cuenta que muta la imagen, así que copie el original si lo necesita.
fuente
Recientemente emprendí este proyecto en C. El siguiente código hace lo siguiente:
1) Obtiene la orientación actual de la imagen.
2) Elimina todos los datos contenidos en
APP1
(Datos Exif) yAPP2
(Datos Flashpix) en blanco.3) Recrea el
APP1
marcador de orientación y lo establece en el valor original.4) Encuentra el primer
EOI
marcador (Fin de imagen) y trunca el archivo si es necesario.Algunas cosas a tener en cuenta primero son:
1) Este programa se usa para mi cámara Nikon. El formato JPEG de Nikon agrega algo al final de cada archivo que crea. Codifican estos datos al final del archivo de imagen creando un segundo
EOI
marcador. Normalmente, los programas de imagen leen hasta el primerEOI
marcador encontrado. Nikon tiene información después de esto que mi programa trunca.2) Debido a que esto es para el formato Nikon, asume el
big endian
orden de los bytes. Si usa su archivo de imagenlittle endian
, es necesario hacer algunos ajustes.3) Al intentar usar
ImageMagick
para eliminar datos exif, noté que terminé con un archivo más grande de lo que comencé. Esto me lleva a creer queImagemagick
está codificando los datos que desea eliminar, y los está almacenando en otro lugar del archivo. Llámame anticuado, pero cuando elimino algo de un archivo, quiero que el tamaño del archivo sea más pequeño, si no del mismo tamaño. Cualquier otro resultado sugiere minería de datos.Y aquí está el código:
¡Espero que esto ayude a alguien!
fuente
Sugerencia para mayor comodidad: si está en Windows, puede aplicar un archivo REG al registro para instalar una entrada en el menú contextual, de modo que pueda eliminar fácilmente los metadatos haciendo clic derecho en el archivo y seleccionando el comando.
Por ejemplo (recuerde editar las rutas para señalar dónde están instalados los ejecutables en su computadora):
Para archivos JPEG, JPG, JPE, JFIF: comando " Eliminar metadatos "
(usando ExifTool , conserva el archivo original como copia de seguridad)
exiftool -all= image.jpg
JPG-RemoveExif.reg
Para archivos PNG: comando " Convertir a PNG minificado "
(usando ImageMagick , cambia los datos sobrescribiendo el archivo original)
convert -background none -strip -set filename:n "%t" image.png "%[filename:n].png"
PNG-Minify.reg
Relacionado: convertir PNG a ICO en el menú contextual .
fuente
Utilizamos esto para eliminar los datos de latitud del archivo TIFF:
exiv2 mo -M"del Exif.GPSInfo.GPSLatitude" IMG.TIF
donde puede usarexiv2 -pa IMG.TIF
para enumerar todos los metadatos.fuente
Para la tira EXIF sin pérdidas, puede usar libexif , que está disponible con cygwin . Elimine EXIF y la miniatura para anonimizar una imagen:
Arrastrar y soltar
.bat
archivo para usar con cygwin:fuente
Otro software:
MetAbility QuickFix
"MetabilityQuickFix elimina toda su información personal y datos de ubicación GPS de todas sus fotos, con un solo clic del mouse. Elimina todos los elementos de metadatos de los bloques de datos Exif, Iptc y XMP de forma segura de sus archivos JPEG y automáticamente realiza copias de seguridad de los archivos originales "
JPEG y PNG Stripper
"Una herramienta para eliminar / limpiar / eliminar metadatos innecesarios (basura) de archivos JPG / JPEG / JFIF y PNG. La calidad de la imagen NO ESTÁ AFECTADA. Incluye soporte de línea de comando. Solo especifique una carpeta o archivo en la línea de comando (se permiten comodines)"
fuente
Si ya usa jpegoptim, también puede usarlo para eliminar el exif.
fuente