Comment ajouter des données exif à une image?
-
04-07-2019 - |
Question
Sur notre site, nous recevons une grande quantité de photos provenant de différentes sources.
Afin de réduire la taille des fichiers, nous supprimons toutes les données EXIF ?? de la source à l'aide de mogrify :
mogrify -strip image.jpg
Ce que nous aimerions pouvoir faire, c’est d’insérer certaines données exif de base (Copyright Initrode, etc.) dans ce nouveau "clean". image, mais je n'arrive pas à trouver quoi que ce soit dans la documentation qui permettrait d'atteindre cet objectif.
Quelqu'un a-t-il déjà fait cela?
Si cela ne peut pas être fait avec imagemagick, une solution basée sur PHP serait la meilleure solution!
Merci.
La solution
Vous pouvez économiser beaucoup d’espace, en particulier si vous avez un grand nombre d’images.
Ajoutez ce qui suit dans text.txt (format des balises IPTC extraites de ici ):
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"
Supprimer toutes les données exif existantes de l'image
mogrify -strip image.jpg
Ajoutez le crédit à votre image
mogrify -profile 8BIMTEXT:text.txt image.jpg
Autres conseils
Exiftool semble correspondre parfaitement à votre cas.
Je ne l'ai pas essayé, mais je suis maintenant tenté de réparer toutes mes photos de lune de miel portant le numéro du 01/01/2074, car j'ai oublié de réinitialiser la date après la mort des piles.
Voici une bibliothèque PHP Exif qui devrait faire ce dont vous avez besoin.
La bibliothèque PHP Exif (PEL) vous permet de manipuler complètement Exif (échangeable Format de fichier image). C'est le données que les appareils photo numériques placent dans leurs images, telles que la date et temps, vitesse d'obturation, valeur ISO et ainsi de suite sur.
En utilisant PEL, on peut complètement modifier le Données Exif, ce qui signifie qu'il peut être à la fois lu et écrit. Complètement nouvelle Exif les données peuvent également être ajoutées aux images. PEL est écrit complètement en PHP et ne dépend de rien sauf d'une norme installation de PHP, version 5. PEL est hébergé sur SourceForge.
sur Linux, il existe un programme appelé jhead. Il peut ajouter un en-tête exif minimal avec la commande:
jhead -mkexif img.jpg
Je doute que vous gagniez beaucoup d'espace en supprimant les informations Exif ...
Quoi qu’il en soit, je peux me tromper, mais les métadonnées Exif appartiennent davantage au stockage d’informations techniques (et contextuelles). Pour des choses comme le copyright, vous devriez utiliser IPTC à la place.
C’est quelque chose que vous pouvez apparemment faire avec ImageMagick: Écrire des données IPTC sur Jpeg avec ImageMagick .
Vous pouvez le faire directement en PHP en utilisant la bibliothèque PEL . Pour ce faire, il vous suffit de remplacer les en-têtes EXIF ??existants,
.// 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');
Vous pouvez trouver une liste complète de toutes les données EXIF ??prises en charge (PelTag) dans les documents PEL .