Quero remover as informações EXIF (incluindo miniaturas, metadados, informações da câmera ... tudo!) Dos arquivos JPEG, mas não quero recomprimi-las, pois a recompressão do JPEG prejudicará a qualidade e, geralmente, aumentará a tamanho do arquivo.
Estou procurando uma solução Unix / Linux, ainda melhor se estiver usando a linha de comando. Se possível, use o ImageMagick (ferramenta de conversão). Se isso não for possível, um pequeno script Python, Perl, PHP (ou outra linguagem comum no Linux) estaria ok.
Existe uma pergunta semelhante, mas relacionada ao .NET .
unix
imagemagick
jpeg
exif
Denilson Sá Maia
fonte
fonte
Respostas:
exiftool faz o trabalho para mim, está escrito em perl, portanto, deve funcionar para você em qualquer
https://exiftool.org/
uso:
fonte
sudo apt-get install libimage-exiftool-perl
brew install exiftool
-overwrite_original
opção e o programa não criará os arquivos de backup.exiftool -EXIF= image.jpg
Com imagemagick:
fonte
-strip
remove perfis de cores. Para qualquer um que tenta retirar dados EXIF sem perder informações de perfil, consulte a minha solução aqui: stackoverflow.com/a/17516878/1854499O ImageMagick possui o parâmetro -strip , mas recompacta a imagem antes de salvar. Assim, este parâmetro é inútil para minha necessidade.
Este tópico do fórum ImageMagick explica que não há suporte para operações sem perdas JPEG no ImageMagick (sempre que isso mudar, poste um comentário com um link!) E sugere o uso de jpegtran (da libjpeg):
(Se você não tiver certeza de que eu respondo minha própria pergunta, leia isto e isto e isto )
fonte
jpegtran -copy none image.jpg newimage.jpg
-progressive
Isso reduzirá o tamanho.Você também pode querer examinar o Exiv2 - é muito rápido (C ++ e sem recompressão), é a linha de comando e também fornece uma biblioteca para manipulação EXIF à qual você pode se conectar. Não sei quantas distribuições Linux disponibilizam, mas no CentOS está atualmente disponível no repositório base.
Uso:
fonte
Eu proporia
jhead
:Apenas 123Kb no debian / ubuntu, não é compactado novamente. Observe que ele modifica a imagem; portanto, copie o original, se necessário.
fonte
Recentemente, assumi esse projeto em C. O código abaixo faz o seguinte:
1) Obtém a orientação atual da imagem.
2) Remove todos os dados contidos em
APP1
(dados Exif) eAPP2
(dados Flashpix) apagando.3) Recria o
APP1
marcador de orientação e o define para o valor original.4) Localiza o primeiro
EOI
marcador (Fim da imagem) e trunca o arquivo, se necessário.Algumas coisas a serem observadas primeiro são:
1) Este programa é usado para minha câmera Nikon. O formato JPEG da Nikon acrescenta algo ao final de cada arquivo que ele cria. Eles codificam esses dados no final do arquivo de imagem, criando um segundo
EOI
marcador. Normalmente, os programas de imagem são lidos até o primeiroEOI
marcador encontrado. Depois disso, a Nikon possui informações que meu programa trunca.2) Como é para o formato Nikon, ele assume a
big endian
ordem dos bytes. Se o seu arquivo de imagem usarlittle endian
, é necessário fazer alguns ajustes.3) Ao tentar usar
ImageMagick
para extrair dados exif, notei que acabei com um arquivo maior do que o que comecei. Isso me leva a acreditar queImagemagick
está codificando os dados que você deseja remover e os armazenando em outro lugar do arquivo. Me chame de antiquado, mas quando removo algo de um arquivo, quero que o tamanho seja menor, se não do mesmo tamanho. Quaisquer outros resultados sugerem mineração de dados.E aqui está o código:
Espero que isso ajude alguém!
fonte
Dica de conveniência: se você estiver no Windows, poderá aplicar um arquivo REG ao registro, instalar uma entrada no menu de contexto, para remover facilmente os metadados clicando com o botão direito do mouse no arquivo e selecionando o comando.
Por exemplo (lembre-se de editar os caminhos para apontar para onde os executáveis estão instalados no seu computador):
Para arquivos JPEG, JPG, JPE, JFIF: comando " Remover metadados "
(usando o ExifTool , preserva o arquivo original como backup)
exiftool -all= image.jpg
JPG-RemoveExif.reg
Para arquivos PNG: comando " Converter em PNG reduzido "
(usando o ImageMagick , altera os dados substituindo o arquivo original)
convert -background none -strip -set filename:n "%t" image.png "%[filename:n].png"
PNG-Minify.reg
Relacionado: converta PNGs em ICO no menu de contexto .
fonte
Usamos isso para remover dados de latitude do arquivo TIFF:
exiv2 mo -M"del Exif.GPSInfo.GPSLatitude" IMG.TIF
onde você pode usarexiv2 -pa IMG.TIF
para listar todos os metadados.fonte
Para a faixa EXIF sem perdas, você pode usar o libexif , disponível no cygwin . Remova o EXIF e a miniatura para anonimizar uma imagem:
Arraste e solte o
.bat
arquivo para usar com o cygwin:fonte
Outro software:
MetAbility QuickFix
"O MetabilityQuickFix retira todas as suas informações pessoais e dados de localização GPS de todas as suas fotos, com apenas um clique do mouse. Ele limpa todos os itens de metadados dos blocos de dados Exif, Iptc e XMP com segurança dos seus arquivos JPEG e faz automaticamente cópias de backup dos arquivos originais "
Stripper JPEG e PNG
"Uma ferramenta para remover / limpar / remover metadados desnecessários (lixo eletrônico) de arquivos JPG / JPEG / JFIF e PNG. A qualidade da imagem NÃO É AFETADA. Inclui suporte à linha de comando. Basta especificar uma pasta ou arquivo na linha de comando (caracteres curinga são permitidos)"
fonte
Se você já usa o jpegoptim, também pode removê-lo.
fonte