//#############################################################################################
//##############################################################################################
-/* INFOS SUR LE FICHIER
+/* INFOS SUR LE FICHIER
-Nom : iptc.class.php
-Rôle : contient la classe permettant de gérer les IPTC d'un fichier image
-Développeur(s) : Arica Alex, Thies C. Arntzen
+Nom : iptc.class.php
+Rôle : contient la classe permettant de gérer les IPTC d'un fichier image
+Développeur(s) : Arica Alex, Thies C. Arntzen
-FIN INFOS SUR LE FICHIER
+FIN INFOS SUR LE FICHIER
-INFOS SUR LA CLASSE 'class_iptc'
+INFOS SUR LA CLASSE 'class_iptc'
-REFERENCES : Développée le 04 Octobre 02 par Arica Alex avec l'aide de Thies C. Arntzen
+REFERENCES : Développée le 04 Octobre 02 par Arica Alex avec l'aide de Thies C. Arntzen
-ROLE : permet de manipuler les iptc d'une image
+ROLE : permet de manipuler les iptc d'une image
-VARIABLES :
-- $h_codesIptc
-- $h_cheminFichier
-- $h_iptcData
+VARIABLES :
+- $h_codesIptc
+- $h_cheminFichier
+- $h_iptcData
-METHODES :
-- fct_lireIPTC
-- fct_ecrireIPTC
-- fct_iptcMaketag
+METHODES :
+- fct_lireIPTC
+- fct_ecrireIPTC
+- fct_iptcMaketag
-FIN INFOS SUR LA CLASSE
+FIN INFOS SUR LA CLASSE
-*/
+*/
-class class_IPTC
-{
+class class_IPTC
+{
-/* VARIABLES statics */
+/* VARIABLES statics */
-var $h_codesIptc; /* $h_codesIptc : (tableau associatif) contient les codes des champs IPTC associés à un libellé */
-var $h_cheminImg; /* $h_cheminImg : (chaine) contient le chemin complet du fichier d'image */
-var $h_iptcData; /* $h_iptcData : (chaine) contient les données encodées de l'iptc de l'image */
+var $h_codesIptc; /* $h_codesIptc : (tableau associatif) contient les codes des champs IPTC associés à un libellé */
+var $h_cheminImg; /* $h_cheminImg : (chaine) contient le chemin complet du fichier d'image */
+var $h_iptcData; /* $h_iptcData : (chaine) contient les données encodées de l'iptc de l'image */
-/* FIN VARIABLES statics
+/* FIN VARIABLES statics
--------------------------------------------------------------------------------------------------------
+-------------------------------------------------------------------------------------------------------
-INFOS SUR LA FONCTION
+INFOS SUR LA FONCTION
-ROLE : constructeur
-FONCTION : class_IPTC($cheminImg)
-DESCRIPTION DES PARAMETRES :
-- $cheminImg = (chaine) le chemin complet du fichier d'image à traiter
+ROLE : constructeur
+FONCTION : class_IPTC($cheminImg)
+DESCRIPTION DES PARAMETRES :
+- $cheminImg = (chaine) le chemin complet du fichier d'image à traiter
-FIN INFOS SUR LA FONCTION */
+FIN INFOS SUR LA FONCTION */
-function class_IPTC($cheminImg)
-{
+function class_IPTC($cheminImg)
+{
-// Inititalisations
+// Inititalisations
-// Les valeurs IPTC pouvant être manipulées
-$this -> h_codesIptc = array("005" => "objectName",
-"007" => "editStatus",
-"010" => "priority",
-"015" => "category",
-"020" => "supplementalCategory",
-"022" => "fixtureIdentifier",
-"025" => "keywords",
-"030" => "releaseDate",
-"035" => "releaseTime",
-"040" => "specialInstructions",
-"045" => "referenceService",
-"047" => "referenceDate",
-"050" => "referenceNumber",
-"055" => "createdDate",
-"060" => "createdTime",
-"065" => "originatingProgram",
-"070" => "programVersion",
-"075" => "objectCycle",
-"080" => "byline",
-"085" => "bylineTitle",
-"090" => "city",
-"095" => "provinceState",
-"100" => "countryCode",
-"101" => "country",
-"103" => "originalTransmissionReference",
-"105" => "headline",
-"110" => "credit",
-"115" => "source",
-"116" => "copyright",
-"120" => "caption",
-"121" => "localCaption",
-"122" => "captionWriter");
+// Les valeurs IPTC pouvant être manipulées
+$this -> h_codesIptc = array("005" => "objectName",
+"007" => "editStatus",
+"010" => "priority",
+"015" => "category",
+"020" => "supplementalCategory",
+"022" => "fixtureIdentifier",
+"025" => "keywords",
+"030" => "releaseDate",
+"035" => "releaseTime",
+"040" => "specialInstructions",
+"045" => "referenceService",
+"047" => "referenceDate",
+"050" => "referenceNumber",
+"055" => "createdDate",
+"060" => "createdTime",
+"065" => "originatingProgram",
+"070" => "programVersion",
+"075" => "objectCycle",
+"080" => "byline",
+"085" => "bylineTitle",
+"090" => "city",
+"095" => "provinceState",
+"100" => "countryCode",
+"101" => "country",
+"103" => "originalTransmissionReference",
+"105" => "headline",
+"110" => "credit",
+"115" => "source",
+"116" => "copyright",
+"120" => "caption",
+"121" => "localCaption",
+"122" => "captionWriter");
-// On enregistre le chemin de l'image à traiter
-$this -> h_cheminImg = $cheminImg;
+// On enregistre le chemin de l'image à traiter
+$this -> h_cheminImg = $cheminImg;
-// On extrait les données encodées de l'iptc
+// On extrait les données encodées de l'iptc
// getimagesize($this -> h_cheminImg, &$info); //avant,marche pas sinon
-getimagesize($this -> h_cheminImg, $info); //marche sans le &
-$this -> h_iptcData = $info["APP13"];
+getimagesize($this -> h_cheminImg, $info); //marche sans le &
+$this -> h_iptcData = $info["APP13"];
-}
+}
-/* FIN FONCTION class_IPTC();
+/* FIN FONCTION class_IPTC();
--------------------------------------------------------------------------------------------------------
+-------------------------------------------------------------------------------------------------------
-INFOS SUR LA FONCTION
+INFOS SUR LA FONCTION
-ROLE : lit les IPTC d'une image et les renvoie dans un tableau associatif
-FONCTION : fct_lireIPTC()
-TYPE RETOURNE : chaine sous forme de tableau associatif
+ROLE : lit les IPTC d'une image et les renvoie dans un tableau associatif
+FONCTION : fct_lireIPTC()
+TYPE RETOURNE : chaine sous forme de tableau associatif
-FIN INFOS SUR LA FONCTION */
+FIN INFOS SUR LA FONCTION */
-function fct_lireIPTC()
-{
- $tblIPTC = iptcparse($this -> h_iptcData);
-
- while( (is_array($tblIPTC)) && (list($codeIPTC, $valeurIPTC) = each($tblIPTC)) )
- {
- $codeIPTC = str_replace("2#", "", $codeIPTC);
-
- if( ($codeIPTC != "000") && ($codeIPTC != "140") && $this->h_codesIptc["$codeIPTC"])
- {
- while(list($index, ) = each($valeurIPTC))
- {
+function fct_lireIPTC()
+{
+ $tblIPTC = iptcparse($this -> h_iptcData);
+
+ while( (is_array($tblIPTC)) && (list($codeIPTC, $valeurIPTC) = each($tblIPTC)) )
+ {
+ $codeIPTC = str_replace("2#", "", $codeIPTC);
+
+ if( ($codeIPTC != "000") && ($codeIPTC != "140") && $this->h_codesIptc["$codeIPTC"])
+ {
+ while(list($index, ) = each($valeurIPTC))
+ {
if ($this->h_codesIptc["$codeIPTC"]) $codeIPTC = $this->h_codesIptc["$codeIPTC"];
- $lesIptc[$codeIPTC] .= $valeurIPTC[$index].$retourLigne;
- $retourLigne = "\n";
- }
- }
- }
-
- if(is_array($lesIptc)) return $lesIptc;
- else return false;
-}
+ $lesIptc[$codeIPTC] .= $valeurIPTC[$index].$retourLigne;
+ $retourLigne = "\n";
+ }
+ }
+ }
+
+ if(is_array($lesIptc)) return $lesIptc;
+ else return false;
+}
-/* FIN FONCTION fct_lireIPTC();
+/* FIN FONCTION fct_lireIPTC();
--------------------------------------------------------------------------------------------------------
+-------------------------------------------------------------------------------------------------------
-INFOS SUR LA FONCTION
+INFOS SUR LA FONCTION
-ROLE : écrit des IPTC dans le fichier image
-FONCTION : fct_ecrireIPTC()
-DESCRIPTION DES PARAMETRES :
-- $tblIPTC_util = (tableau associatif) contient les codes des champs IPTC à modifier associés leur valeur
-- $cheminImgAModifier = (chaine) stocke le chemin de l'image dont l'IPTC est à modifier ; s'il est null
-le chemin sera celui contenu dans '$this -> h_cheminImg'
-TYPE RETOURNE : booléen
+ROLE : écrit des IPTC dans le fichier image
+FONCTION : fct_ecrireIPTC()
+DESCRIPTION DES PARAMETRES :
+- $tblIPTC_util = (tableau associatif) contient les codes des champs IPTC à modifier associés leur valeur
+- $cheminImgAModifier = (chaine) stocke le chemin de l'image dont l'IPTC est à modifier ; s'il est null
+le chemin sera celui contenu dans '$this -> h_cheminImg'
+TYPE RETOURNE : booléen
-FIN INFOS SUR LA FONCTION */
+FIN INFOS SUR LA FONCTION */
-function fct_ecrireIPTC($tblIPTC_util, $cheminImgAModifier = "")
-{
+function fct_ecrireIPTC($tblIPTC_util, $cheminImgAModifier = "")
+{
-// La tableau devant contenir des IPTC est vide ou n'est pas un tableau associatif
-if( (empty($tblIPTC_util)) || (!is_array($tblIPTC_util)) ) return false;
+// La tableau devant contenir des IPTC est vide ou n'est pas un tableau associatif
+if( (empty($tblIPTC_util)) || (!is_array($tblIPTC_util)) ) return false;
-// Si le chemin de l'image à modifier est vide alors on lui spécifie le chemin par défaut
-if(empty($cheminImgAModifier)) $cheminImgAModifier = $this -> h_cheminImg;
+// Si le chemin de l'image à modifier est vide alors on lui spécifie le chemin par défaut
+if(empty($cheminImgAModifier)) $cheminImgAModifier = $this -> h_cheminImg;
-// On récupère l'IPTC du fichier image courant
-$tblIPTC_old = iptcparse($this -> h_iptcData);
+// On récupère l'IPTC du fichier image courant
+$tblIPTC_old = iptcparse($this -> h_iptcData);
-// On prélève le tableau contenant les codes et les valeurs des IPTC de la photo
-while(list($codeIPTC, $codeLibIPTC) = each($this -> h_codesIptc))
-{
+// On prélève le tableau contenant les codes et les valeurs des IPTC de la photo
+while(list($codeIPTC, $codeLibIPTC) = each($this -> h_codesIptc))
+{
-// On teste si les données originelles correspondant au code en cours sont présents
-if (is_array($tblIPTC_old["2#".$codeIPTC])) $valIPTC_new = $tblIPTC_old["2#".$codeIPTC];
-else $valIPTC_new = array();
+// On teste si les données originelles correspondant au code en cours sont présents
+if (is_array($tblIPTC_old["2#".$codeIPTC])) $valIPTC_new = $tblIPTC_old["2#".$codeIPTC];
+else $valIPTC_new = array();
-// On remplace les valeurs des IPTC demandées
-if (is_array($tblIPTC_util[$codeIPTC]))
-{
-if (count($tblIPTC_util[$codeIPTC])) $valIPTC_new = $tblIPTC_util[$codeIPTC];
+// On remplace les valeurs des IPTC demandées
+if (is_array($tblIPTC_util[$codeIPTC]))
+{
+if (count($tblIPTC_util[$codeIPTC])) $valIPTC_new = $tblIPTC_util[$codeIPTC];
-}else{
+}else{
-$val = trim(strval($tblIPTC_util[$codeIPTC]));
-if (strlen($val)) $valIPTC_new[0] = $val;
-}
+$val = trim(strval($tblIPTC_util[$codeIPTC]));
+if (strlen($val)) $valIPTC_new[0] = $val;
+}
-// On crée un nouveau iptcData à partir de '$tblIPTC_new' qui contient le code et la valeur de l'IPTC
-foreach($valIPTC_new as $val)
-{
-$iptcData_new .= $this -> fct_iptcMaketag(2, $codeIPTC, $val);
-}
+// On crée un nouveau iptcData à partir de '$tblIPTC_new' qui contient le code et la valeur de l'IPTC
+foreach($valIPTC_new as $val)
+{
+$iptcData_new .= $this -> fct_iptcMaketag(2, $codeIPTC, $val);
+}
-}
+}
-/* A partir du nouveau iptcData contenu dans '$iptcData_new' on crée grâce à la fonction 'iptcembed()'
-le contenu binaire du fichier image avec le nouveau IPTC inclu */
-$contenuImage = iptcembed($iptcData_new, $this -> h_cheminImg);
+/* A partir du nouveau iptcData contenu dans '$iptcData_new' on crée grâce à la fonction 'iptcembed()'
+le contenu binaire du fichier image avec le nouveau IPTC inclu */
+$contenuImage = iptcembed($iptcData_new, $this -> h_cheminImg);
-// Ecriture dans le fichier image
-$idFichier = fopen($cheminImgAModifier, "wb");
-fwrite($idFichier, $contenuImage);
-fclose($idFichier);
+// Ecriture dans le fichier image
+$idFichier = fopen($cheminImgAModifier, "wb");
+fwrite($idFichier, $contenuImage);
+fclose($idFichier);
-return true;
+return true;
-}
+}
-/* FIN FONCTION fct_ecrireIPTC();
+/* FIN FONCTION fct_ecrireIPTC();
--------------------------------------------------------------------------------------------------------
+-------------------------------------------------------------------------------------------------------
-INFOS SUR LA FONCTION
+INFOS SUR LA FONCTION
-ROLE : permet de transformer une valeur de d'IPTC (code + valeur) en iptcData
-AUTEUR : Thies C. Arntzen
-FONCTION : fct_iptcMaketag($rec, $dat, $val)
-DESCRIPTION DES PARAMETRES :
-- $rec = (entier) toujours à mettre à 2
-- $dat = (chaine) le code de l'IPTC (de type '110' et non '2#110')
-- $val = (chaine) la valeur de l'IPTC
-TYPE RETOURNE : booléen
+ROLE : permet de transformer une valeur de d'IPTC (code + valeur) en iptcData
+AUTEUR : Thies C. Arntzen
+FONCTION : fct_iptcMaketag($rec, $dat, $val)
+DESCRIPTION DES PARAMETRES :
+- $rec = (entier) toujours à mettre à 2
+- $dat = (chaine) le code de l'IPTC (de type '110' et non '2#110')
+- $val = (chaine) la valeur de l'IPTC
+TYPE RETOURNE : booléen
-FIN INFOS SUR LA FONCTION */
+FIN INFOS SUR LA FONCTION */
-function fct_iptcMaketag($rec, $dat, $val)
-{
-$len = strlen($val);
-if ($len < 0x8000)
-return chr(0x1c).chr($rec).chr($dat).
-chr($len >> 8).
-chr($len & 0xff).
-$val;
-else
-return chr(0x1c).chr($rec).chr($dat).
-chr(0x80).chr(0x04).
-chr(($len >> 24) & 0xff).
-chr(($len >> 16) & 0xff).
-chr(($len >> 8 ) & 0xff).
-chr(($len ) & 0xff).
-$val;
-}
+function fct_iptcMaketag($rec, $dat, $val)
+{
+$len = strlen($val);
+if ($len < 0x8000)
+return chr(0x1c).chr($rec).chr($dat).
+chr($len >> 8).
+chr($len & 0xff).
+$val;
+else
+return chr(0x1c).chr($rec).chr($dat).
+chr(0x80).chr(0x04).
+chr(($len >> 24) & 0xff).
+chr(($len >> 16) & 0xff).
+chr(($len >> 8 ) & 0xff).
+chr(($len ) & 0xff).
+$val;
+}
-// FIN FONCTION fct_iptcMaketag();
+// FIN FONCTION fct_iptcMaketag();
-}
+}
/* Fin class_IPTC */