Como faço para adicionar exif dados para uma imagem?
-
04-07-2019 - |
Pergunta
Em nosso site, temos uma grande quantidade de fotos enviadas de várias fontes.
A fim de manter o tamanho dos arquivos para baixo, nós tira todos os dados EXIF ?? da fonte usando mogrify :
mogrify -strip image.jpg
O que nós gostaríamos de ser capaz de fazer é inserir alguns dados EXIF ??básicos (copyright Initrode, etc) de volta para esta nova imagem "limpa", mas eu não consigo encontrar nada nos docs que iria conseguir isso.
Alguém tem alguma experiência de fazer isso?
Se ele não pode ser feito através de imagemagick, uma solução baseada em PHP seria a próxima melhor coisa!
Graças.
Solução
Você pode salvar uma grande quantidade de espaço, especialmente se você tem um grande número de imagens ..
Adicione o seguinte ao text.txt (formato de IPTC tomadas de aqui ):
2#110#Credit="My Company"
2#05#Object Name="THE_OBJECT_NAME"
2#55#Date Created="2011-02-03 12:45"
2#80#By-line="BY-LINE?"
2#110#Credit="The CREDIT"
2#115#Source="SOURCE"
2#116#Copyright Notice="THE COPYRIGHT"
2#118#Contact="THE CONTACT"
2#120#Caption="AKA Title"
Faixa de todos os existentes exif dados a partir da imagem
mogrify -strip image.jpg
Adicione o crédito para sua imagem
mogrify -profile 8BIMTEXT:text.txt image.jpg
Outras dicas
exiftool parece que seria uma correspondência exata para você.
Eu não tentei, mas agora estou tentado a ir e corrigir todas as minhas fotos de lua de mel que são marcados 2074/01/01 porque eu esqueci de redefinir a data após as baterias morreram.
Aqui está um PHP Exif Biblioteca que deve fazer o que você precisa.
O Exif Biblioteca PHP (PEL) permite manipular totalmente Exif (trocável Imagem File Format) de dados. Isto é o dados que as câmeras digitais colocar em suas imagens, como a data e tempo, velocidade do obturador, valor ISO e assim por diante.
Usando PEL, pode-se totalmente modificar o EXIF dados, o que significa que ele pode ser tanto lidos e escritos. Completamente novo Exif os dados também podem ser adicionadas às imagens. PEL está escrito totalmente em PHP e não depende de nada a não ser um padrão instalação de PHP versão 5. PEL é hospedado no SourceForge.
no Linux há um programa chamado jhead. É possível adicionar um cabeçalho exif mínima com o comando:
jhead -mkexif img.jpg
Eu duvido que você vai ganhar muito espaço, removendo informações Exif ...
De qualquer forma, eu posso estar errado, mas Exif metadados pertence mais para armazenar informações técnicas (e contextual). Para coisas como direitos autorais, você deve usar IPTC vez.
Isso é algo que você pode fazer, aparentemente, com ImageMagick: Write IPTC dados para Jpeg com ImageMagick .
Você pode fazer isso diretamente em PHP usando o href="https://packagist.org/packages/lsolesen/pel" rel="nofollow noreferrer"> PEL biblioteca . Você faria isso, basta substituir os EXIF-cabeçalhos existentes,
// Load image data
$data = new PelDataWindow(file_get_contents('IMAGE PATH'));
// Prepare image data
$jpeg = $file = new PelJpeg();
$jpeg->load($data);
// Create new EXIF-headers, overwriting any existing ones (when writing to disk)
$exif = new PelExif();
$jpeg->setExif($exif);
$tiff = new PelTiff();
$exif->setTiff($tiff);
// Create Ifd-data that will hold EXIF-tags
$ifd0 = new PelIfd(PelIfd::IFD0);
$tiff->setIfd($ifd0);
// Create EXIF-data for copyright
$make = new PelEntryAscii(PelTag::COPYRIGHT, '2008-2017 Conroy');
$ifd0->addEntry($make);
// Add more EXIF-data...
// Save to disk
$file->saveFile('IMAGE.jpg');
Você pode encontrar uma lista completa de todos EXIF-dados suportados (PelTag) nos docs PEL .