ou '' (meme repertoire) // - $img_Dst : NOM de l image de Destination --> ou '' (meme nom que l image Source) // - $rep_Src : repertoire de l image Source (deprotégé) // - $img_Src : NOM de l image Source // - $position : position du texte sur l image // --------------------------------------------------------------------------------------- // ATTENTION : si le texte est TROP long, il risque d etre tronque ! // --------------------------------------------------------------------------------------- // Position du texte sur l image (valeurs possibles) : // $position = 'HG' --> en Haut a Gauche (valeur par defaut) // $position = 'HD' --> en Haut a Droite // $position = 'HC' --> en Haut au Centre // $position = 'BG' --> en Bas a Gauche // $position = 'BD' --> en Bas a Droite // $position = 'BC' --> en Bas au Centre // --------------------------------------------------------------------------------------- // $rep_Dst : il faut s'assurer que les droits en écriture ont été donnés au dossier (chmod) // - si $rep_Dst = '' : $rep_Dst = $rep_Src (meme repertoire que l image Source) // - si $img_Dst = '' : $img_Dst = $img_Src (meme nom que l image Source) // - si $rep_Dst='' ET $img_Dst='' : on ecrase (remplace) l image source ! // --------------------------------------------------------------------------------------- // NB : $img_Dst et $img_Src doivent avoir la meme extension (meme type mime) ! // Extensions acceptees (traitees ici) : .jpg , .jpeg , .png // Pour ajouter d autres extensions : voir la bibliotheque GD ou ImageMagick // (GD) NE fonctionne PAS avec les GIF ANIMES ou a fond transparent ! // --------------------------------------------------------------------------------------- // UTILISATION (exemple copyright, ou legende de l image) : // $texteOK = fcttexteimage('copyright : MOI','reppicto/','monpicto.jpg','repimage/','monimage.jpg','BG'); // if ($texteOK == true) { echo 'Ajout du texte OK !'; } // --------------------------------------------------------------------------------------- function fcttexteimage($chaine, $rep_Dst, $img_Dst, $rep_Src, $img_Src, $position) { // ---------------------------------------------------- $condition = 0; $position = strtoupper($position); // on met en majuscule (par defaut) // Si certains parametres ont pour valeur '' : if ($rep_Dst == '') { $rep_Dst = $rep_Src; } // (meme repertoire) if ($img_Dst == '') { $img_Dst = $img_Src; } // (meme nom) if ($position == '') { $position = 'BG'; } // en Bas A Gauche (valeur par defaut) // ---------------------------------------------------- // si le fichier existe dans le répertoire, on continue... if (file_exists($rep_Src.$img_Src) && $chaine!='') { // -------------------------------------------------- // extensions acceptees : $ExtfichierOK = '" jpg jpeg png"'; // (l espace avant jpg est important) // extension fichier Source $tabimage = explode('.',$img_Src); $extension = $tabimage[sizeof($tabimage)-1]; // dernier element $extension = strtolower($extension); // on met en minuscule // -------------------------------------------------- // extension OK ? on continue ... if (strpos($ExtfichierOK,$extension) != '') { // -------------------------------------------- // recuperation des dimensions de l image Src $img_size = getimagesize($rep_Src.$img_Src); $W_Src = $img_size[0]; // largeur $H_Src = $img_size[1]; // hauteur // -------------------------------------------- // creation de la ressource-image "Dst" en fonction de l extension // (a partir de l image source) switch($extension) { case 'jpg': case 'jpeg': $Ress_Dst = imagecreatefromjpeg($rep_Src.$img_Src); break; case 'png': $Ress_Dst = imagecreatefrompng($rep_Src.$img_Src); break; } // -------------------------------------------- // creation de l image TEXTE // -------------------------------------------- // dimension de l image "Txt" en fonction : // - de la longueur du texte a afficher // - des dimensions des caracteres (7x15 pixels par caractere) // ATTENTION : si le texte est TROP long, il risque d etre tronque ! $W = strlen($chaine) * 7; if ($W > $W_Src) { $W = $W_Src; } $H = 15; // 15 pixels de haut (par defaut) // -------------------------------------------- // creation de la ressource-image "Txt" (en fonction de l extension) switch($extension) { case 'jpg': case 'jpeg': case 'png': $Ress_Txt = imagecreatetruecolor($W,$H); // Couleur du Fond : blanc $blanc = imagecolorallocate ($Ress_Txt, 255, 255, 255); imagefill ($Ress_Txt, 0, 0, $blanc); // Couleur du Texte : noir $textcolor = imagecolorallocate($Ress_Txt, 0, 0, 0); // Ecriture du TEXTE imagestring($Ress_Txt, 3, 0, 0, $chaine, $textcolor); break; } // -------------------------------------------- // positionnement du TEXTE sur l image // -------------------------------------------- if ($position == 'HG') { $X_Dest = 0; $Y_Dest = 0; } if ($position == 'HD') { $X_Dest = $W_Src - $W; $Y_Dest = 0; } if ($position == 'HC') { $X_Dest = ($W_Src - $W)/2; $Y_Dest = 0; } if ($position == 'BG') { $X_Dest = 0; $Y_Dest = $H_Src - $H; } if ($position == 'BD') { $X_Dest = $W_Src - $W; $Y_Dest = $H_Src - $H; } if ($position == 'BC') { $X_Dest = ($W_Src - $W)/2; $Y_Dest = $H_Src - $H; } // -------------------------------------------- // copie par fusion de l image "Txt" sur l image "Dst" // (avec transparence de 50%) // -------------------------------------------- imagecopymerge ($Ress_Dst, $Ress_Txt, $X_Dest, $Y_Dest, 0, 0, $W, $H, 50); // -------------------------------------------- // ENREGISTREMENT dans le repertoire (en fonction de l extension) switch ($extension) { case 'jpg': case 'jpeg': imagejpeg ($Ress_Dst, $rep_Dst.$img_Dst); break; case 'png': imagepng ($Ress_Dst, $rep_Dst.$img_Dst); break; } // -------------------------------------------- // liberation des ressources-image imagedestroy ($Ress_Txt); imagedestroy ($Ress_Dst); // -------------------------------------------- $condition = 1; } } // --------------------------------------------------------------------------------------- // si le fichier a bien ete cree if ($condition == 1 && file_exists($rep_Dst.$img_Dst)) { return true; } else { return false; } } // retourne : true si l ajout de texte a bien ete ajoute, sinon false // --------------------------------------------------------------------------------------- ?>