Marquage des images avec php

J’aimerais écrire un script capable de marquer les images et de sauvegarder la balise dans le FICHIER , et non dans une firebase database externe. Je devrais également lire les balises du fichier via php également.

Pourquoi est-ce que je veux faire ça?

Un clic droit sur une image et en sélectionnant les propriétés, puis en cliquant sur les détails, puis en cliquant sur les balises et en ajoutant ensuite vos balises, est pour le moins fastidieux. Je ne peux pas trouver de raccourci pour append des balises rapidement dans Windows, donc je veux écrire mon propre script qui peut le faire.

Est-ce possible?

Je ne sais pas si c’est le cas, chaque fois que je recherche des images et des tags dans la même ligne, je reçois des tags d’image pour des tutoriels HTML ou des personnes enregistrant des tags dans une firebase database externe. Je ne peux pas vraiment trouver de bonnes ressources, si quelqu’un peut en suggérer quelques-unes, je serais reconnaissant.

Qu’est-ce que j’ai jusqu’ici?

Je peux lister toutes les images sur mon disque dur et cliquer sur une image et une fenêtre apparaîtra pour que je puisse entrer une étiquette. J’envoie ensuite cette balise à un fichier php en attendant que je fasse quelque chose avec …

Pourquoi ne veux-je pas enregistrer les balises dans une firebase database externe?

Je ne vais pas exécuter mon localhost tout le temps. Si je copie les images, les balises doivent aller avec.

Toute information à ce sujet serait géniale.

Vous pouvez utiliser

  • iptcembed pour incorporer des données IPTC binarys dans une image JPEG
  • exif-read-data pour lire les en-têtes EXIF ​​à partir de JPEG ou TIFF
  • Comment lire une balise de titre à partir d’un fichier JPEG

    getimagesize('./phplogo.jpg', $info); $title = ''; if (isset($info["APP13"])) { $iptc = iptcparse ($info["APP13"]); $title = (isset($iptc["2#085"][0])) ? $iptc["2#085"][0] : NULL; } print $title; 

    Comment append une balise de titre à un fichier JPEG
    Remarques: Il suffit de manipuler le tableau $ iptc et de spécifier le chemin du fichier
    Ceci est un exemple de travail de iptcembed

     // iptc_make_tag() function by Thies C. Arntzen function iptc_make_tag($rec, $data, $value) { $length = strlen($value); $retval = chr(0x1C) . chr($rec) . chr($data); if($length < 0x8000) { $retval .= chr($length >> 8) . chr($length & 0xFF); } else { $retval .= chr(0x80) . chr(0x04) . chr(($length >> 24) & 0xFF) . chr(($length >> 16) & 0xFF) . chr(($length >> 8) & 0xFF) . chr($length & 0xFF); } return $retval . $value; } // Path to jpeg file $path = './phplogo.jpg'; // Set the IPTC tags $iptc = array( '2#085' => 'Anis TITLE' ); // Convert the IPTC tags into binary code $data = ''; foreach($iptc as $tag => $ssortingng) { $tag = substr($tag, 2); $data .= iptc_make_tag(2, $tag, $ssortingng); } // Embed the IPTC data $content = iptcembed($data, $path); // Write the new image data out to the file. $fp = fopen($path, "wb"); fwrite($fp, $content); fclose($fp); 

    Voici la liste complète des index IPTC

     DEFINE('IPTC_OBJECT_NAME', '2#005'); DEFINE('IPTC_EDIT_STATUS', '2#007'); DEFINE('IPTC_PRIORITY', '2#010'); DEFINE('IPTC_CATEGORY', '2#015'); DEFINE('IPTC_SUPPLEMENTAL_CATEGORY', '2#020'); DEFINE('IPTC_FIXTURE_IDENTIFIER', '2#022'); DEFINE('IPTC_KEYWORDS', '2#025'); DEFINE('IPTC_RELEASE_DATE', '2#030'); DEFINE('IPTC_RELEASE_TIME', '2#035'); DEFINE('IPTC_SPECIAL_INSTRUCTIONS', '2#040'); DEFINE('IPTC_REFERENCE_SERVICE', '2#045'); DEFINE('IPTC_REFERENCE_DATE', '2#047'); DEFINE('IPTC_REFERENCE_NUMBER', '2#050'); DEFINE('IPTC_CREATED_DATE', '2#055'); DEFINE('IPTC_CREATED_TIME', '2#060'); DEFINE('IPTC_ORIGINATING_PROGRAM', '2#065'); DEFINE('IPTC_PROGRAM_VERSION', '2#070'); DEFINE('IPTC_OBJECT_CYCLE', '2#075'); DEFINE('IPTC_BYLINE', '2#080'); DEFINE('IPTC_BYLINE_TITLE', '2#085'); DEFINE('IPTC_CITY', '2#090'); DEFINE('IPTC_PROVINCE_STATE', '2#095'); DEFINE('IPTC_COUNTRY_CODE', '2#100'); DEFINE('IPTC_COUNTRY', '2#101'); DEFINE('IPTC_ORIGINAL_TRANSMISSION_REFERENCE', '2#103'); DEFINE('IPTC_HEADLINE', '2#105'); DEFINE('IPTC_CREDIT', '2#110'); DEFINE('IPTC_SOURCE', '2#115'); DEFINE('IPTC_COPYRIGHT_STRING', '2#116'); DEFINE('IPTC_CAPTION', '2#120'); DEFINE('IPTC_LOCAL_CAPTION', '2#121'); 

    Vous pouvez utiliser PHPExiftool pour écrire des métadonnées dans un fichier comme suit (citation de la page github):

     add(new Metadata(new ObjectName(), new Mono('Pretty cool subject'))); $Writer->write('image.jpg', $bag); 

    Et au cas où vous voudriez garder une trace des métadonnées que vous avez écrites, vous pouvez facilement utiliser la fonction md5_file () de php pour obtenir un identifiant du fichier dont vous avez modifié les métadonnées, puis écrire une ligne dans un fichier texte avec le résultat hachage suivi des métadonnées que vous avez écrites séparées par un délimiteur tel que “,” (virgule). Chaque ligne de ce fichier texte représenterait un fichier modifié par votre script.