1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
//"Signature" de l'image
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 paramètres ont pour valeur '' :
if ($rep_Dst=='') { $rep_Dst = $rep_Src; } // (même répertoire)
if ($img_Dst=='') { $img_Dst = $img_Src; } // (même 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 acceptées :
$extension_Allowed = 'jpg,jpeg,png'; // (sans espaces)
// extension fichier Source
$extension_Src = strtolower(pathinfo($img_Src,PATHINFO_EXTENSION));
// ----------------------
// extension OK ? on continue ...
if(in_array($extension_Src, explode(',', $extension_Allowed))) {
// ---------------------
// récupération 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_Src) {
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 caractère)
// ATTENTION : si le texte est TROP long, il risque d'être tronqué !
$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_Src) {
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_Src) {
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;
}
}
// ---------------------------------------------------
// retourne : true si le redimensionnement et l'enregistrement ont bien eu lieu, sinon false
if ($condition==1 && file_exists($rep_Dst.$img_Dst)) { return true; }
else { return false; }
// ---------------------------------------------------
};
//Exemple d'utilisation de la fonction
$texteOK = fcttexteimage('copyright : MOI','reppicto/','monpicto.jpg','repimage/','monimage.jpg','BG');
if ($texteOK == 1) { echo 'Ajout du texte OK !'; } |
Partager