Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

COPYRIGHT SUR IMAGES


Information sur la source

Catégorie :Graphique Classé sous : copyright, gd2, image Niveau : Débutant Date de création : 09/10/2006 Date de mise à jour : 22/10/2006 18:32:54 Vu / téléchargé: 7 364 / 713

Note :
7,33 / 10 - par 3 personnes
7,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (70)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Bonjours, j'ai créé ce script pour un copain qui en avait marre de rajouter l'adresse de son site sur toutes les images qu'il rajoutait!

Donc je lui est proposé de faire un script qui fait tout cela...

Facile d'utilisation, il vous demande que faire ou presque :D
 

Source

  • <?php
  • // ** Ne rien modifier ici
  • define('fond_fichier', 'fond.jpg'); // Image de fond
  • define('longeur_max', 20); // Longueur maximal du nom d'un fichier (pour tronquage)
  • define('police', 'polices/police.ttf'); // Police utilisé
  • define('skin', 'style'); // Emplacement du skin
  • $format = array(1 => 'gif', 2 => 'jpeg', 3 => 'png');
  • include 'config.php';
  • // Fonctions, elles permettent d'exécuter un code plusieurs fois pour différentes choses
  • function mise_majmin($chaine,$majmin,$plus){
  • define('min', 'efgijnpäâàáåãéèëêòóôõöøìíîïùúûüýñçþÿæœðø');
  • define('maj', 'EFGIJNPÄÂÀÁÅÃÉÈËÊÒÓÔÕÖØÌÍÎÏÙÚÛÜÝÑÇÞÝÆŒÐØ');
  • $chaine = strtoupper($chaine);
  • if($majmin === 'maj'){
  • $chaine = strtr($chaine, min, maj);
  • if($chaine === 'JPG' && $plus === 1){$chaine = 'JPEG';}
  • }else if($majmin === 'min'){
  • $chaine = strtr($chaine, maj, min);
  • if($chaine === 'jpg' && $plus === 1){$chaine = 'jpeg';}
  • }
  • return $chaine;
  • }
  • function tronquer($chaine, $longeur_moy){
  • if (strlen($chaine) > $longeur_moy){
  • $longeur_moy = $longeur_moy / 2;
  • $chaine = substr_replace($chaine, '...', $longeur_moy, - $longeur_moy);
  • }
  • return $chaine;
  • }
  • // Cette condition sert à afficher directement une image avec copyright (par lien)
  • if($_GET['choix'] === 'gen'){
  • define('fichier', $_GET['image']);
  • define('repertoire', $repertoire.'/');
  • if(file_exists(repertoire.fichier)){
  • define('ext_plus', pathinfo(fichier, PATHINFO_EXTENSION)); // Fonction de php qui renvoi l'extension d'un fichier
  • define('ext', mise_majmin(ext_plus, 'maj', 0));
  • list($imagex, $imagey, $type) = getimagesize(repertoire.fichier); // Détails sur l'image
  • header ('Content-type: image/'.$format[$type]);
  • // Lecture de l'image et mise en variable
  • if(ext === 'JPG' or ext === 'JPEG')
  • $image = imagecreatefromjpeg(repertoire.fichier);
  • if(ext === 'PNG')
  • $image = imagecreatefrompng(repertoire.fichier);
  • if(ext === 'GIF')
  • $image = imagecreatefromgif(repertoire.fichier);
  • define('imagex', $imagex); // Nombre de pixel en longueur
  • define('imagey', $imagey); // Nombre de pixel en hauteur
  • // Positionnement du texte
  • switch(posx){
  • case 'g': define('x', 20);
  • break;
  • case 'c': define('x', (imagex - (50 + (strlen(copyright) * taille))) / 2);
  • break;
  • case 'd': define('x', imagex - (50 + (strlen(copyright) * taille)));
  • break;
  • }
  • switch(posy){
  • case 'h': define('y', 20 + taille);
  • break;
  • case 'm': define('y', (imagey - 50) / 2);
  • break;
  • case 'b': define('y', imagey - taille);
  • break;
  • }
  • define('couleur', imagecolorallocate($image, rouge1, vert1, bleu1)); // On met une couleur en variable R,V,B
  • define('couleur2', imagecolorallocate($image, rouge2, vert2, bleu2)); // On met une couleur en variable R,V,B
  • imagettftext($image, taille, 0, x, y, couleur, police, copyright); // Ecriture du premier texte sur l'image
  • imagettftext($image, taille, 0, x + 1, y + 1, couleur2, police, copyright); // Ecriture du deuxième texte sur l'image
  • // On affiche l'image
  • if(ext === 'JPG' or ext === 'JPEG')
  • imagejpeg($image);
  • if(ext === 'PNG')
  • imagepng($image);
  • if(ext === 'GIF')
  • imagegif($image);
  • imagedestroy($image); // On détruit l'image pour vider la variable et la mémoire
  • }
  • exit();
  • }
  • $_GET = ''; // Sécuriser le script en enlevant les variables stockées dans le lien
  • ?>
  • <html>
  • <head>
  • <title>Copyright sur Image</title>
  • <link rel="stylesheet" type="text/css" href="<?php echo skin.'/style'.$s.'.css'; ?>" title="PyroFrissons" media="screen" />
  • </head>
  • <body>
  • <div id="titre">Copyright sur Image</div>
  • <?php
  • $n = "\n"; // Permet le retour à la ligne dans le code
  • $validation = 0;
  • $exist = 0;
  • define('erreur', '<div id="validation"><blink>Désolé,&nbsp;aucune&nbsp;image&nbsp;trouvé...</blink></div>'.$n);
  • define('erreur2', preg_replace('/aucune&nbsp;image/', 'aucun&nbsp;dossier', erreur));
  • define('retour', '<div id="retour"><a href="javascript:history.back()">Retour</a></div>'.$n);
  • $fich = '<div id="colone-image">'.$n.'<div id="image-titre">&nbsp;---&nbsp;Nom&nbsp;de&nbsp;l\'image&nbsp;---&nbsp;</div>'.$n.'<div id="image-fichier">'.$n;
  • $deff = '<div id="colone-deff">'.$n.'<div id="deff-titre">&nbsp;---&nbsp;etat&nbsp;---&nbsp;</div>'.$n.'<div id="deff-fichier\">'.$n;
  • echo '<div id="encadrement">'.$n;
  • if($_POST['choix'] === 'scanner'){
  • if($_POST['repertoire'] != ''){
  • define('repertoire', $_POST['repertoire']); // Répertoire scanné (point si direct -- deux points si précédents)
  • }
  • if(!file_exists(repertoire)){$exist === 'ok';}else{$dossier = openDir(repertoire);}
  • define('etat', 'Extension');
  • $deff = preg_replace('/etat/', etat, $deff);
  • while($fichier = @readDir($dossier)){
  • $ext = pathinfo($fichier, PATHINFO_EXTENSION); // Fonction de php qui renvoi l'extension d'un fichier
  • $ext = mise_majmin($ext, 'maj', 0);
  • $ext2 = mise_majmin($ext, 'maj', 1);
  • $ext3 = mise_majmin($ext, 'min', 0);
  • if(repertoire === skin){$fond = fond_fichier;}
  • if(($fichier != '.')&&($fichier != '..')&&($fichier != $fond)){
  • if($ext === 'JPG' or $ext === 'JPEG' or $ext === 'PNG' or $ext === 'GIF'){
  • if(!is_dir(repertoire.'/'.$fichier)){
  • $validation++; // Argumenter la variable afin de savoir qu'il y a une image
  • if($_POST['renommer'] === 'oui'){
  • $fichier2 = $_POST['nom'].$validation.'.'.$ext3;
  • rename(repertoire.'/'.$fichier, repertoire.'/'.$fichier2);
  • }else{
  • $fichier2 = $fichier;
  • }
  • $fich .= '<a href="'.repertoire.'/'.$fichier2.'">';
  • // Affiche les images du répertoire indiqué et les extensions
  • if($ext === 'JPEG')
  • $fich .= tronquer(substr($fichier2,0,strlen($fichier2)-5), longeur_max).'</a><br>'.$n;
  • else
  • $fich .= tronquer(substr($fichier2,0,strlen($fichier2)-4), longeur_max).'</a><br>'.$n;
  • $deff .= '<font id="on">'.$ext2.'</font><br>'.$n;
  • }
  • }
  • }
  • }
  • // Ajoute le résultat pour l'affichage à la fin
  • $affichage = $fich.'<br></div>'.$n;
  • $affichage .= $deff.'</div>'.$n;
  • $affichage .= '</div>'.$n.retour;
  • if ($validation <= 0)
  • if($exist === 'ok')
  • $affichage = erreur2;
  • else
  • $affichage = erreur;
  • $affichage .= '<br>'.retour;
  • }else if($_POST['choix'] === 'modifier'){
  • if($_POST['repertoire'] != ''){
  • define('repertoire', $_POST['repertoire']); // Répertoire scanné (point si direct -- deux points si précédents)
  • }
  • if(!file_exists(repertoire)){$exist === 'ok';}else{$dossier = openDir(repertoire);}
  • if($_POST['repertoire2'] != ''){
  • define('repertoire2', $_POST['repertoire2']); // Répertoire de sortie (point si direct -- deux points si précédents)
  • }
  • if(!file_exists(repertoire2)){mkdir(repertoire2);}
  • define('etat', 'Status');
  • $deff = preg_replace('/etat/', etat, $deff);
  • if($_POST['qualite'] >= 100){
  • define('qualite', 100);
  • }else{
  • define('qualite', round($_POST['qualite']));
  • }
  • while($fichier = @readDir($dossier)){
  • $ext = pathinfo($fichier, PATHINFO_EXTENSION); // Fonction de php qui renvoi l'extension d'un fichier
  • if($ext === 'JPG' or $ext === 'JPEG' or $ext === 'PNG' or $ext === 'GIF'){
  • $ext = mise_majmin($ext, 'min', 0);
  • if($ext === 'jpeg'){
  • $renommer = substr($fichier,0,strlen($fichier)-5);
  • }else{
  • $renommer = substr($fichier,0,strlen($fichier)-4);
  • }
  • rename(repertoire.'/'.$fichier, repertoire.'/'.$renommer.'.'.$ext);
  • $fichier = $renommer.'.'.$ext;
  • }
  • if(repertoire === skin){$fond = fond_fichier;}
  • if(($fichier != '.')&&($fichier != '..')&&($fichier != $fond)){
  • if($ext === 'jpg' or $ext === 'jpeg' or $ext === 'png' or $ext === 'gif'){
  • if(!is_dir(repertoire.'/'.$fichier)){
  • $validation++; // Argumenter la variable afin de savoir qu'il y a une image
  • $resultat = 'Modifié';
  • $resultat2 = 'Erroné';
  • if($_POST['renommer'] === 'oui'){
  • $fichier2 = $_POST['nom'].$validation.'.'.$ext;
  • }else{
  • $fichier2 = $fichier;
  • }
  • // Lecture de l'image et mise en variable
  • if($ext === 'jpg' or $ext === 'jpeg')
  • $image = imagecreatefromjpeg(repertoire.'/'.$fichier) or $resultat = $resultat2;
  • if($ext === 'png')
  • $image = imagecreatefrompng(repertoire.'/'.$fichier) or $resultat = $resultat2;
  • if($ext === 'gif')
  • $image = imagecreatefromgif(repertoire.'/'.$fichier) or $resultat = $resultat2;
  • //if($ext === 'bmp')
  • // $image = imagecreatefromwbmp(repertoire.'/'.$fichier) or $resultat = $resultat2;
  • list($imagex, $imagey) = getimagesize(repertoire.'/'.$fichier); // Détails sur l'image
  • //$imagex = imagesx($image); // Nombre de pixel en longueur
  • //$imagey = imagesy($image); // Nombre de pixel en hauteur
  • // Positionnement du texte
  • switch($_POST['posx']){
  • case 'g': $x = 20;
  • break;
  • case 'c': $x = ($imagex - (50 + (strlen($_POST['copyright']) * $_POST['taille']))) / 2;
  • break;
  • case 'd': $x = $imagex - (50 + (strlen($_POST['copyright']) * $_POST['taille']));
  • break;
  • }
  • switch($_POST['posy']){
  • case 'h': $y = 20 + $_POST['taille'];
  • break;
  • case 'm': $y = ($imagey - 50) / 2;
  • break;
  • case 'b': $y = $imagey - $_POST['taille'];
  • break;
  • }
  • $height = imagefontheight(taille); // Calcul de la taille d'une chaine (approximatif)
  • define('couleur', imagecolorallocate($image, $_POST['rouge1']*255/100, $_POST['vert1']*255/100, $_POST['bleu1']*255/100)); // On met une couleur en variable R,V,B
  • define('couleur2', imagecolorallocate($image, $_POST['rouge2']*255/100, $_POST['vert2']*255/100, $_POST['bleu2']*255/100)); // On met une couleur en variable R,V,B
  • imagettftext($image, $_POST['taille'], 0, $x, $y, couleur, 'polices/'.$_POST['police'], $_POST['copyright']); // Ecriture du premier texte sur l'image
  • imagettftext($image, $_POST['taille'], 0, $x + 1, $y + 1, couleur2, 'polices/'.$_POST['police'], $_POST['copyright']); // Ecriture du deuxième texte sur l'image
  • // On enregistre l'image (80 est le niveau de netteté)
  • if($ext === 'jpg' or $ext === 'jpeg')
  • imagejpeg($image, repertoire2.'/'.$fichier2, qualite) or $resultat = $resultat2;
  • if($ext === 'png')
  • imagepng($image, repertoire2.'/'.$fichier2, qualite) or $resultat = $resultat2;
  • if($ext === 'gif')
  • imagegif($image, repertoire2.'/'.$fichier2, qualite) or $resultat = $resultat2;
  • //if($ext === 'bmp')
  • // imagewbmp($image, repertoire2.'/'.$fichier2, $qualite) or $resultat = $resultat2;
  • if($_POST['renommer'] === 'oui'){
  • rename(repertoire2.'/'.$fichier, repertoire2.'/'.$fichier2);
  • }
  • imagedestroy($image); // On détruit l'image pour vider la variable et la mémoire
  • if($resultat === 'Modifié')
  • $resultat_couleur = 'on'; // Donner de la couleur (image modifié avec succés -> vert)
  • else
  • $resultat_couleur = 'off'; // Donner de la couleur (image raté -> rouge)
  • $fich .= '<a href="'.repertoire2.'/'.$fichier2.'">';
  • // Affiche les images du répertoire indiqué et dit si la modification a réussi
  • if($ext === 'jpeg')
  • $fich .= tronquer(substr($fichier2,0,strlen($fichier2)-5), longeur_max).'</a><br>'.$n;
  • else
  • $fich .= tronquer(substr($fichier2,0,strlen($fichier2)-4), longeur_max).'</a><br>'.$n;
  • $deff .= '<span id="'.$resultat_couleur.'">'.$resultat.'</span><br>'.$n;
  • }
  • }
  • }
  • }
  • // Ajoute le résultat pour l'affichage à la fin
  • $affichage = $fich.'<br></div>'.$n;
  • $affichage .= $deff.'</div>'.$n;
  • $affichage .= '</div>'.$n.retour;
  • if ($validation <= 0)
  • if($exist === 'ok')
  • $affichage = erreur2;
  • else
  • $affichage = erreur;
  • $affichage .= '<br>'.retour;
  • }else{
  • $option = '';
  • $ptiterreur = 'Pour&nbsp;le&nbsp;répertoire&nbsp;du&nbsp;script&nbsp;tapez&nbsp;\'.\'&nbsp;Pour&nbsp;le&nbsp;répertoire&nbsp;parent&nbsp;tapez&nbsp;\'..\'';
  • switch(posx){
  • case 'g':
  • $posx_plus[0] = ' checked';
  • break;
  • case 'c':
  • $posx_plus[1] = ' checked';
  • break;
  • case 'd':
  • $posx_plus[2] = ' checked';
  • break;
  • }
  • switch(posy){
  • case 'h':
  • $posy_plus[0] = ' checked';
  • break;
  • case 'm':
  • $posy_plus[1] = ' checked';
  • break;
  • case 'b':
  • $posy_plus[2] = ' checked';
  • break;
  • }
  • for($i = 0; $i != 11; $i++){
  • $j = ($i*10);
  • $option .= '<option value="'.$j.'">'.$j.'</option>';
  • }
  • if(file_exists('polices')){
  • $dossier = openDir('polices');
  • $polices = '<option value="police.ttf">'.nom_police.'</option>';
  • while($fichier = @readDir($dossier)){
  • $ext = pathinfo($fichier, PATHINFO_EXTENSION); // Fonction de php qui renvoi l'extension d'un fichier
  • if(($fichier != '.')&&($fichier != '..')&&($fichier != 'police.ttf')&&($ext === 'ttf' or $ext === 'TTF')){
  • $polices .= '<option value="'.$fichier.'">'.substr($fichier,0,strlen($fichier)-4).'</option>';
  • }
  • }
  • }else{
  • $ptiterreur = 'Dsl Aucune police trouvé pour le répertoire \'polices\'!';
  • }
  • $affichage = '<form name="copyright" method="post">'.$n;
  • $affichage .= '<div id="sous-titre">Choisissez&nbsp;Les&nbsp;Répertoires</div>'.$n;
  • $affichage .= '<div id="repertoire">Répertoire&nbsp;Des&nbsp;Images<span id="repertoirespan">&nbsp;</span><input type="text" name="repertoire" value="'.$repertoire.'" size=\"30\"></div>'.$n;
  • $affichage .= '<div id="repertoire2">Répertoire&nbsp;De&nbsp;Sortie<span id="repertoire2span">&nbsp;</span><input type="text" name="repertoire2" value="'.$repertoire2.'" size=\"30\"></div>'.$n;
  • $affichage .= '<div id="separation1"></div>'.$n;
  • $affichage .= '<div id="couleur1">Couleur&nbsp;Avant<span id="couleur1span">&nbsp;</span><select name="rouge1"><option value="'.rouge1.'">R'.rouge1.'</option>'.$option.'</select>'.$n;
  • $affichage .= '<select name="vert1"><option value="'.vert1.'">V'.vert1.'</option>'.$option.'</select>'.$n;
  • $affichage .= '<select name="bleu1"><option value="'.bleu1.'">B'.bleu1.'</option>'.$option.'</select></div'.$n;
  • $affichage .= '<div id="couleur2">Couleur&nbsp;Arrière<span id="couleur2span">&nbsp;</span><select name="rouge2"><option value="'.rouge2.'">R'.rouge2.'</option>'.$option.'</select>'.$n;
  • $affichage .= '<select name="vert2"><option value="'.vert2.'">V'.vert2.'</option>'.$option.'</select>'.$n;
  • $affichage .= '<select name="bleu2"><option value="'.bleu2.'">B'.bleu2.'</option>'.$option.'</select></div'.$n;
  • $affichage .= '<div id="separation2"></div>'.$n;
  • $affichage .= '<div id="position"><font id="titreposition">Positionnement</font><br><input type="radio" name="posy" value="h"'.$posy_plus[0].'>Haut<input type="radio" name="posy" value="m"'.$posy_plus[1].'>Milieu<input type="radio" name="posy" value="b"'.$posy_plus[2].'>Bas<br>'.$n;
  • $affichage .= '<input type="radio" name="posx" value="g"'.$posx_plus[0].'>Gauche<input type="radio" name="posx" value="c"'.$posx_plus[1].'>Centre<input type="radio" name="posx" value="d"'.$posx_plus[2].'>Droite</div>'.$n;
  • $affichage .= '<div id="separation3"></div>'.$n;
  • $affichage .= '<div id="taille">Taille&nbsp;Texte<span id="taillespan">&nbsp;</span><input type="text" name="taille" value="'.taille.'" size=\"10\"></div>'.$n;
  • $affichage .= '<div id="polices">Police&nbsp;Choisie<span id="policesspan">&nbsp;</span><select name="police">'.$polices.'</select></div>'.$n;
  • $affichage .= '<div id="copyright">Texte&nbsp;Copyright<span id="copyrightspan">&nbsp;</span><input type="text" name="copyright" value="'.copyright.'" size=\"30\"></div>'.$n;
  • $affichage .= '<div id="separation4"></div>'.$n;
  • $affichage .= '<div id="renommer"><input type="radio" name="renommer" value="oui">&nbsp;Renommer&nbsp;&nbsp;<input type="radio" name="renommer" value="non" checked>&nbsp;Ne&nbsp;Pas&nbsp;Renommer</div>'.$n;
  • $affichage .= '<div id="renommer"><input type="text" name="nom" value="Nom à donner aux fichiers" size=\"30\"></div>'.$n;
  • $affichage .= '<div id="separation5"></div>'.$n;
  • $affichage .= '<div id="qualite">Qualité&nbsp;Image<span id="qualitespan">&nbsp;</span><input type="text" name="qualite" value="80" size=\"10\">&nbsp;%</div>'.$n;
  • $affichage .= '<div id="choix">Scanner&nbsp;<input type="radio" name="choix" value="scanner">&nbsp;<input type="radio" name="choix" value="modifier">&nbsp;Modifier</div>'.$n;
  • $affichage .= '<div id="valider"><input type="submit" value="Valider"></div>'.$n;
  • $affichage .= '</div></form>'.$n;
  • $affichage .= '<div id="explic"><blink>'.$ptiterreur.'</blink></div>'.$n;
  • }
  • echo $affichage;
  • ?>
  • </body>
  • </html>
<?php
// ** Ne rien modifier ici
define('fond_fichier', 'fond.jpg'); // Image de fond
define('longeur_max', 20); // Longueur maximal du nom d'un fichier (pour tronquage)
define('police', 'polices/police.ttf'); // Police utilisé
define('skin', 'style'); // Emplacement du skin
$format = array(1 => 'gif', 2 => 'jpeg', 3 => 'png');
include 'config.php';

// Fonctions, elles permettent d'exécuter un code plusieurs fois pour différentes choses
function mise_majmin($chaine,$majmin,$plus){
 define('min', 'efgijnpäâàáåãéèëêòóôõöøìíîïùúûüýñçþÿæœðø');
 define('maj', 'EFGIJNPÄÂÀÁÅÃÉÈËÊÒÓÔÕÖØÌÍÎÏÙÚÛÜÝÑÇÞÝÆŒÐØ');
 $chaine = strtoupper($chaine);
 if($majmin === 'maj'){
  $chaine = strtr($chaine, min, maj);
  if($chaine === 'JPG' && $plus === 1){$chaine = 'JPEG';}
 }else if($majmin === 'min'){
  $chaine = strtr($chaine, maj, min);
  if($chaine === 'jpg' && $plus === 1){$chaine = 'jpeg';}
 }
 return $chaine;
}
function tronquer($chaine, $longeur_moy){
 if (strlen($chaine) > $longeur_moy){
  $longeur_moy = $longeur_moy / 2;
  $chaine = substr_replace($chaine, '...', $longeur_moy, - $longeur_moy);
 }
 return $chaine;
}

// Cette condition sert à afficher directement une image avec copyright (par lien)
if($_GET['choix'] === 'gen'){
 define('fichier', $_GET['image']);
 define('repertoire', $repertoire.'/');
 if(file_exists(repertoire.fichier)){
  define('ext_plus', pathinfo(fichier, PATHINFO_EXTENSION)); // Fonction de php qui renvoi l'extension d'un fichier
  define('ext', mise_majmin(ext_plus, 'maj', 0));
  list($imagex, $imagey, $type) = getimagesize(repertoire.fichier); // Détails sur l'image
  header ('Content-type: image/'.$format[$type]);
  
  // Lecture de l'image et mise en variable
  if(ext === 'JPG' or ext === 'JPEG')
   $image = imagecreatefromjpeg(repertoire.fichier);
  if(ext === 'PNG')
   $image = imagecreatefrompng(repertoire.fichier);
  if(ext === 'GIF')
   $image = imagecreatefromgif(repertoire.fichier);

  define('imagex', $imagex); // Nombre de pixel en longueur
  define('imagey', $imagey); // Nombre de pixel en hauteur

  // Positionnement du texte
  switch(posx){
   case 'g': define('x', 20);
   break;
   case 'c': define('x', (imagex - (50 + (strlen(copyright) * taille))) / 2);
   break;
   case 'd': define('x', imagex - (50 + (strlen(copyright) * taille)));
   break;
  }
  switch(posy){
   case 'h': define('y', 20 + taille);
   break;
   case 'm': define('y', (imagey - 50) / 2);
   break;
   case 'b': define('y', imagey - taille);
   break; 	
  }
  define('couleur', imagecolorallocate($image, rouge1, vert1, bleu1)); // On met une couleur en variable R,V,B
  define('couleur2', imagecolorallocate($image, rouge2, vert2, bleu2)); // On met une couleur en variable R,V,B
  imagettftext($image, taille, 0, x, y, couleur, police, copyright); // Ecriture du premier texte sur l'image
  imagettftext($image, taille, 0, x + 1, y + 1, couleur2, police, copyright); // Ecriture du deuxième texte sur l'image

  // On affiche l'image
  if(ext === 'JPG' or ext === 'JPEG')
   imagejpeg($image);
  if(ext === 'PNG')
   imagepng($image);
  if(ext === 'GIF')
   imagegif($image);

  imagedestroy($image); // On détruit l'image pour vider la variable et la mémoire
 }
 exit();
}
$_GET = ''; // Sécuriser le script en enlevant les variables stockées dans le lien
?>
<html>
 <head>
  <title>Copyright sur Image</title>
  <link rel="stylesheet" type="text/css" href="<?php echo skin.'/style'.$s.'.css'; ?>" title="PyroFrissons" media="screen" />
 </head>
 <body>
  <div id="titre">Copyright sur Image</div>
<?php
$n = "\n"; // Permet le retour à la ligne dans le code
$validation = 0;
$exist = 0;
define('erreur', '<div id="validation"><blink>Désolé,&nbsp;aucune&nbsp;image&nbsp;trouvé...</blink></div>'.$n);
define('erreur2', preg_replace('/aucune&nbsp;image/', 'aucun&nbsp;dossier', erreur));
define('retour', '<div id="retour"><a href="javascript:history.back()">Retour</a></div>'.$n);
$fich = '<div id="colone-image">'.$n.'<div id="image-titre">&nbsp;---&nbsp;Nom&nbsp;de&nbsp;l\'image&nbsp;---&nbsp;</div>'.$n.'<div id="image-fichier">'.$n;
$deff = '<div id="colone-deff">'.$n.'<div id="deff-titre">&nbsp;---&nbsp;etat&nbsp;---&nbsp;</div>'.$n.'<div id="deff-fichier\">'.$n;
echo '<div id="encadrement">'.$n;

if($_POST['choix'] === 'scanner'){
 if($_POST['repertoire'] != ''){
  define('repertoire', $_POST['repertoire']); // Répertoire scanné (point si direct -- deux points si précédents)
 }
 if(!file_exists(repertoire)){$exist === 'ok';}else{$dossier = openDir(repertoire);}
 define('etat', 'Extension');
 $deff = preg_replace('/etat/', etat, $deff);

 while($fichier = @readDir($dossier)){
  $ext = pathinfo($fichier, PATHINFO_EXTENSION); // Fonction de php qui renvoi l'extension d'un fichier
  $ext = mise_majmin($ext, 'maj', 0);
  $ext2 = mise_majmin($ext, 'maj', 1);
  $ext3 = mise_majmin($ext, 'min', 0);

  if(repertoire === skin){$fond = fond_fichier;}
  if(($fichier != '.')&&($fichier != '..')&&($fichier != $fond)){
   if($ext === 'JPG' or $ext === 'JPEG' or $ext === 'PNG' or $ext === 'GIF'){
    if(!is_dir(repertoire.'/'.$fichier)){
     $validation++; // Argumenter la variable afin de savoir qu'il y a une image
	 
	 if($_POST['renommer'] === 'oui'){
	  $fichier2 = $_POST['nom'].$validation.'.'.$ext3;
	  rename(repertoire.'/'.$fichier, repertoire.'/'.$fichier2);
	 }else{
	  $fichier2 = $fichier;
	 }

     $fich .= '<a href="'.repertoire.'/'.$fichier2.'">';

     // Affiche les images du répertoire indiqué et les extensions
     if($ext === 'JPEG')
      $fich .= tronquer(substr($fichier2,0,strlen($fichier2)-5), longeur_max).'</a><br>'.$n;
     else
      $fich .= tronquer(substr($fichier2,0,strlen($fichier2)-4), longeur_max).'</a><br>'.$n;

     $deff .= '<font id="on">'.$ext2.'</font><br>'.$n;
    }
   }
  }
 }
 // Ajoute le résultat pour l'affichage à la fin
 $affichage = $fich.'<br></div>'.$n;
 $affichage .= $deff.'</div>'.$n;
 $affichage .= '</div>'.$n.retour;

 if ($validation <= 0)
  if($exist === 'ok')
   $affichage = erreur2;
  else
   $affichage = erreur;
  $affichage .= '<br>'.retour;

}else if($_POST['choix'] === 'modifier'){
 if($_POST['repertoire'] != ''){
  define('repertoire', $_POST['repertoire']); // Répertoire scanné (point si direct -- deux points si précédents)
 }
 if(!file_exists(repertoire)){$exist === 'ok';}else{$dossier = openDir(repertoire);}
 if($_POST['repertoire2'] != ''){
  define('repertoire2', $_POST['repertoire2']); // Répertoire de sortie (point si direct -- deux points si précédents)
 }
 if(!file_exists(repertoire2)){mkdir(repertoire2);}
 define('etat', 'Status');
 $deff = preg_replace('/etat/', etat, $deff);

 if($_POST['qualite'] >= 100){
  define('qualite', 100);
 }else{
  define('qualite', round($_POST['qualite']));
 }

 while($fichier = @readDir($dossier)){
  $ext = pathinfo($fichier, PATHINFO_EXTENSION); // Fonction de php qui renvoi l'extension d'un fichier

  if($ext === 'JPG' or $ext === 'JPEG' or $ext === 'PNG' or $ext === 'GIF'){
   $ext = mise_majmin($ext, 'min', 0);
   if($ext === 'jpeg'){
    $renommer = substr($fichier,0,strlen($fichier)-5);
   }else{
    $renommer = substr($fichier,0,strlen($fichier)-4);
   }
   rename(repertoire.'/'.$fichier, repertoire.'/'.$renommer.'.'.$ext);
   $fichier = $renommer.'.'.$ext;
  }

  if(repertoire === skin){$fond = fond_fichier;}
  if(($fichier != '.')&&($fichier != '..')&&($fichier != $fond)){
   if($ext === 'jpg' or $ext === 'jpeg' or $ext === 'png' or $ext === 'gif'){
    if(!is_dir(repertoire.'/'.$fichier)){
     $validation++; // Argumenter la variable afin de savoir qu'il y a une image
     $resultat = 'Modifié';
     $resultat2 = 'Erroné';
	 
	 if($_POST['renommer'] === 'oui'){
	  $fichier2 = $_POST['nom'].$validation.'.'.$ext;
	 }else{
	  $fichier2 = $fichier;
	 }
     
     // Lecture de l'image et mise en variable
     if($ext === 'jpg' or $ext === 'jpeg')
      $image = imagecreatefromjpeg(repertoire.'/'.$fichier) or $resultat = $resultat2;
     if($ext === 'png')
      $image = imagecreatefrompng(repertoire.'/'.$fichier) or $resultat = $resultat2;
     if($ext === 'gif')
      $image = imagecreatefromgif(repertoire.'/'.$fichier) or $resultat = $resultat2;
     //if($ext === 'bmp')
     // $image = imagecreatefromwbmp(repertoire.'/'.$fichier) or $resultat = $resultat2;

	 list($imagex, $imagey) = getimagesize(repertoire.'/'.$fichier); // Détails sur l'image
     //$imagex = imagesx($image); // Nombre de pixel en longueur
     //$imagey = imagesy($image); // Nombre de pixel en hauteur

     // Positionnement du texte
     switch($_POST['posx']){
      case 'g': $x = 20;
      break;
      case 'c': $x = ($imagex - (50 + (strlen($_POST['copyright']) * $_POST['taille']))) / 2;
      break;
      case 'd': $x = $imagex - (50 + (strlen($_POST['copyright']) * $_POST['taille']));
      break;
     }
     switch($_POST['posy']){
      case 'h': $y = 20 + $_POST['taille'];
      break;
      case 'm': $y = ($imagey - 50) / 2;
      break;
      case 'b': $y = $imagey - $_POST['taille'];
      break;
     }
     $height = imagefontheight(taille); // Calcul de la taille d'une chaine (approximatif)
     define('couleur', imagecolorallocate($image, $_POST['rouge1']*255/100, $_POST['vert1']*255/100, $_POST['bleu1']*255/100)); // On met une couleur en variable R,V,B
     define('couleur2', imagecolorallocate($image, $_POST['rouge2']*255/100, $_POST['vert2']*255/100, $_POST['bleu2']*255/100)); // On met une couleur en variable R,V,B
     imagettftext($image, $_POST['taille'], 0, $x, $y, couleur, 'polices/'.$_POST['police'], $_POST['copyright']); // Ecriture du premier texte sur l'image
     imagettftext($image, $_POST['taille'], 0, $x + 1, $y + 1, couleur2, 'polices/'.$_POST['police'], $_POST['copyright']); // Ecriture du deuxième texte sur l'image

     // On enregistre l'image (80 est le niveau de netteté)
     if($ext === 'jpg' or $ext === 'jpeg')
      imagejpeg($image, repertoire2.'/'.$fichier2, qualite) or $resultat = $resultat2;
     if($ext === 'png')
      imagepng($image, repertoire2.'/'.$fichier2, qualite) or $resultat = $resultat2;
     if($ext === 'gif')
      imagegif($image, repertoire2.'/'.$fichier2, qualite) or $resultat = $resultat2;
     //if($ext === 'bmp')
     // imagewbmp($image, repertoire2.'/'.$fichier2, $qualite) or $resultat = $resultat2;

     if($_POST['renommer'] === 'oui'){
      rename(repertoire2.'/'.$fichier, repertoire2.'/'.$fichier2);
     }

     imagedestroy($image); // On détruit l'image pour vider la variable et la mémoire

     if($resultat === 'Modifié')
      $resultat_couleur = 'on'; // Donner de la couleur (image modifié avec succés -> vert)
     else
      $resultat_couleur = 'off'; // Donner de la couleur (image raté -> rouge)

     $fich .= '<a href="'.repertoire2.'/'.$fichier2.'">';

     // Affiche les images du répertoire indiqué et dit si la modification a réussi
     if($ext === 'jpeg')
      $fich .= tronquer(substr($fichier2,0,strlen($fichier2)-5), longeur_max).'</a><br>'.$n;
     else
      $fich .= tronquer(substr($fichier2,0,strlen($fichier2)-4), longeur_max).'</a><br>'.$n;

     $deff .= '<span id="'.$resultat_couleur.'">'.$resultat.'</span><br>'.$n;
    }
   }
  }
 }
 // Ajoute le résultat pour l'affichage à la fin
 $affichage = $fich.'<br></div>'.$n;
 $affichage .= $deff.'</div>'.$n;
 $affichage .= '</div>'.$n.retour;

 if ($validation <= 0)
  if($exist === 'ok')
   $affichage = erreur2;
  else
   $affichage = erreur;
  $affichage .= '<br>'.retour;

}else{
 $option = '';
 $ptiterreur = 'Pour&nbsp;le&nbsp;répertoire&nbsp;du&nbsp;script&nbsp;tapez&nbsp;\'.\'&nbsp;Pour&nbsp;le&nbsp;répertoire&nbsp;parent&nbsp;tapez&nbsp;\'..\'';
 switch(posx){
  case 'g':
   $posx_plus[0] = ' checked';
  break;
  case 'c':
   $posx_plus[1] = ' checked';
  break;
  case 'd':
   $posx_plus[2] = ' checked';
  break;
 }
 switch(posy){
  case 'h':
   $posy_plus[0] = ' checked';
  break;
  case 'm':
   $posy_plus[1] = ' checked';
  break;
  case 'b':
   $posy_plus[2] = ' checked';
  break;
 }
 for($i = 0; $i != 11; $i++){
  $j = ($i*10);
  $option .= '<option value="'.$j.'">'.$j.'</option>';
 }
 if(file_exists('polices')){
  $dossier = openDir('polices');
  $polices = '<option value="police.ttf">'.nom_police.'</option>';
  while($fichier = @readDir($dossier)){
   $ext = pathinfo($fichier, PATHINFO_EXTENSION); // Fonction de php qui renvoi l'extension d'un fichier
   if(($fichier != '.')&&($fichier != '..')&&($fichier != 'police.ttf')&&($ext === 'ttf' or $ext === 'TTF')){
    $polices .= '<option value="'.$fichier.'">'.substr($fichier,0,strlen($fichier)-4).'</option>';
   }
  }
 }else{
  $ptiterreur = 'Dsl Aucune police trouvé pour le répertoire \'polices\'!';
 }
 $affichage = '<form name="copyright" method="post">'.$n;
 $affichage .= '<div id="sous-titre">Choisissez&nbsp;Les&nbsp;Répertoires</div>'.$n;
 $affichage .= '<div id="repertoire">Répertoire&nbsp;Des&nbsp;Images<span id="repertoirespan">&nbsp;</span><input type="text" name="repertoire" value="'.$repertoire.'" size=\"30\"></div>'.$n;
 $affichage .= '<div id="repertoire2">Répertoire&nbsp;De&nbsp;Sortie<span id="repertoire2span">&nbsp;</span><input type="text" name="repertoire2" value="'.$repertoire2.'" size=\"30\"></div>'.$n;
 $affichage .= '<div id="separation1"></div>'.$n;
 $affichage .= '<div id="couleur1">Couleur&nbsp;Avant<span id="couleur1span">&nbsp;</span><select name="rouge1"><option value="'.rouge1.'">R'.rouge1.'</option>'.$option.'</select>'.$n;
 $affichage .= '<select name="vert1"><option value="'.vert1.'">V'.vert1.'</option>'.$option.'</select>'.$n;
 $affichage .= '<select name="bleu1"><option value="'.bleu1.'">B'.bleu1.'</option>'.$option.'</select></div'.$n;
 $affichage .= '<div id="couleur2">Couleur&nbsp;Arrière<span id="couleur2span">&nbsp;</span><select name="rouge2"><option value="'.rouge2.'">R'.rouge2.'</option>'.$option.'</select>'.$n;
 $affichage .= '<select name="vert2"><option value="'.vert2.'">V'.vert2.'</option>'.$option.'</select>'.$n;
 $affichage .= '<select name="bleu2"><option value="'.bleu2.'">B'.bleu2.'</option>'.$option.'</select></div'.$n;
 $affichage .= '<div id="separation2"></div>'.$n;
 $affichage .= '<div id="position"><font id="titreposition">Positionnement</font><br><input type="radio" name="posy" value="h"'.$posy_plus[0].'>Haut<input type="radio" name="posy" value="m"'.$posy_plus[1].'>Milieu<input type="radio" name="posy" value="b"'.$posy_plus[2].'>Bas<br>'.$n;
 $affichage .= '<input type="radio" name="posx" value="g"'.$posx_plus[0].'>Gauche<input type="radio" name="posx" value="c"'.$posx_plus[1].'>Centre<input type="radio" name="posx" value="d"'.$posx_plus[2].'>Droite</div>'.$n;
 $affichage .= '<div id="separation3"></div>'.$n;
 $affichage .= '<div id="taille">Taille&nbsp;Texte<span id="taillespan">&nbsp;</span><input type="text" name="taille" value="'.taille.'" size=\"10\"></div>'.$n;
 $affichage .= '<div id="polices">Police&nbsp;Choisie<span id="policesspan">&nbsp;</span><select name="police">'.$polices.'</select></div>'.$n;
 $affichage .= '<div id="copyright">Texte&nbsp;Copyright<span id="copyrightspan">&nbsp;</span><input type="text" name="copyright" value="'.copyright.'" size=\"30\"></div>'.$n;
 $affichage .= '<div id="separation4"></div>'.$n;
 $affichage .= '<div id="renommer"><input type="radio" name="renommer" value="oui">&nbsp;Renommer&nbsp;&nbsp;<input type="radio" name="renommer" value="non" checked>&nbsp;Ne&nbsp;Pas&nbsp;Renommer</div>'.$n;
 $affichage .= '<div id="renommer"><input type="text" name="nom" value="Nom à donner aux fichiers" size=\"30\"></div>'.$n;
 $affichage .= '<div id="separation5"></div>'.$n;
 $affichage .= '<div id="qualite">Qualité&nbsp;Image<span id="qualitespan">&nbsp;</span><input type="text" name="qualite" value="80" size=\"10\">&nbsp;%</div>'.$n;
 $affichage .= '<div id="choix">Scanner&nbsp;<input type="radio" name="choix" value="scanner">&nbsp;<input type="radio" name="choix" value="modifier">&nbsp;Modifier</div>'.$n;
 $affichage .= '<div id="valider"><input type="submit" value="Valider"></div>'.$n;
 $affichage .= '</div></form>'.$n;
 $affichage .= '<div id="explic"><blink>'.$ptiterreur.'</blink></div>'.$n;
}
echo $affichage;
?>
 </body>
</html>

Conclusion

Merci à ApaS pour sa fonction de mise en majuscule (pour les extensions) --> je trouve sa mieu :D
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   polices
    • Baby Kruffy.ttfTélécharger ce fichier [Réservé aux membres club]57 820 octets
    • Bat Font.ttfTélécharger ce fichier [Réservé aux membres club]42 204 octets
    • Judas.ttfTélécharger ce fichier [Réservé aux membres club]36 296 octets
    • Kristen.ttfTélécharger ce fichier [Réservé aux membres club]59 712 octets
    • Linkin Park.ttfTélécharger ce fichier [Réservé aux membres club]19 200 octets
    • Omikron.ttfTélécharger ce fichier [Réservé aux membres club]31 832 octets
    • police.ttfTélécharger ce fichier [Réservé aux membres club]40 836 octets
    • Smash.ttfTélécharger ce fichier [Réservé aux membres club]52 232 octets
  •   style
  • aide.txtTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 239 octets
  • config.phpTélécharger ce fichier [Réservé aux membres club]Voir ce fichier869 octets
  • index.phpTélécharger ce fichier [Réservé aux membres club]Voir ce fichier16 523 octets

Télécharger le zip

Historique

09 octobre 2006 19:37:10 :
quelques rajout vite fait!
11 octobre 2006 20:36:13 :
J'ai retravaillé le code
11 octobre 2006 22:57:40 :
Rapide modification du css
12 octobre 2006 06:33:45 :
Erreur corrigé grâce à votre aide ;)
12 octobre 2006 22:39:44 :
Rajout de quelques bases
13 octobre 2006 22:24:58 :
Rajout de l'affichage direct
13 octobre 2006 22:30:43 :
Déplacement du exit()
15 octobre 2006 13:11:49 :
Correctif :: Extension avec majuscules (compatible)
16 octobre 2006 06:52:20 :
Mettez le skin 2 que j'ai largement amélioré! Le script de renommage ne fonctionne pas... ENCORE
17 octobre 2006 22:03:27 :
Beaucoup de modifications apportées, choix de polices mises dans un répertoire, etc...
17 octobre 2006 22:38:26 :
Problème de positionnement du texte par rapport à sa taille réglé...
18 octobre 2006 17:57:39 :
Les === sont mis et tout fonctionne sauf l'affichage direct biensur...
18 octobre 2006 21:16:36 :
Renommage ajouté mais ne fonctionne pas (fonction de moi)...
20 octobre 2006 07:00:31 :
Quelques constantes, tout les paramètre y sont sauf le renommage qui ne fonctionne pas pour le moment...
20 octobre 2006 18:15:20 :
Petite erreur de fonction corrigé!
21 octobre 2006 08:00:34 :
Fonction de renommage corrigé!
21 octobre 2006 12:52:54 :
Rajout de constantes et petites modification, quelqu'un pourrait-il m'aider pouir l'histoire de la première condition qui sert à créer le copyright grace aux variables du lien!
21 octobre 2006 13:00:32 :
Supprimer le fichier 'rename.php' que ne sert plus à rien maintenant!
22 octobre 2006 18:32:55 :
Petit changement (getimagesize) --> fonctionnement plus rapide ;)

Commentaires et avis

signaler à un administrateur
Commentaire de alvinp le 09/10/2006 06:44:39

Encore une chose, vous pouvez changer la police en remplacent tout simplement 'police.ttf' par la police de votre choix!

signaler à un administrateur
Commentaire de webdeb le 09/10/2006 12:14:17

Salut !

Plusieurs remarques pour améliorer ton code :

- Utilises plutôt des constantes à la place des variables situées en entête de ton fichier
- Pour récupérer une extension, préfère la fonction native de php pathinfo() avec l'option pathinfo_extension
- Mets ton code html entre apostrophes plutôt que des guillemets afin de faciliter la relecture de ton code.
- Pour les tests d'égalité, préfère aussi === à ==
- Pour les extensions valides (gif, png, jpg), fais plutôt un tableau plutôt qu'une batterie de conditions dans le même if()

Voilà !

++

;)

signaler à un administrateur
Commentaire de jean84 le 09/10/2006 15:58:16

Salut !

Je ne suis pas d'accord avec quelques conseils cites plus haut (c'est pas contre toi Webdeb, loin de la) :
- pour les extensions, il est conseille d'utiliser les fonctions str. Par contre l'utilisation que tu en fait n'est pas bonne (ou du moins n'est pas parfaite)
=> $Extension = substr($strrev($Chaine), 0, strpos('.', $Chaine));

- "Mets ton code html entre apostrophes plutôt que des guillemets afin de faciliter la relecture de ton code."
La relecture je crois pas mais la vitesse d'execution de ton script, sa c'est clair.

- "Pour les tests d'égalité, préfère aussi === à =="
Seulement si la variable est suceptible de contenir differents types de donnees (INT, CHAR ou NULL par exemple). Si ce n'est pas le cas, cela ne sert a rien (meme si ce n'est pas grave evidement)

Pour tes tests d'extension, prefere l'utilisation d'un esleif() ou au pire d'un switch() (plus lent) que des if() les uns a la suite des autres. Tu gagneras en rapidite car il ne s'embettera pas a tester les autres possibiltes quand il aura deja un resultat (alors que la, si l'extension est JPG, tu te tapes quand meme les verifs pour savoir si c'est un gif ou un png, alors que tu sais que c'est un JPG)

Voila sinon pas trop mal, a part que ta source est pour les debutants et que tu n'as mis quasiment aucun commentaire "utile". Pas mal de personnes cherchent ce genre de source pour apprendre a utiliser GD mais la, avec cette source, sa risque d'etre difficile si tu ne corrige pas ^^

@++

signaler à un administrateur
Commentaire de alvinp le 09/10/2006 19:03:46

Merci de m'avoir donner tout ces conseilles!
Je vais essayer de faire de mon mieu pour les appliquer, et je republie dés que c'est bon ;)

signaler à un administrateur
Commentaire de alvinp le 09/10/2006 19:14:06

Pour le code html, je fais des mise à la ligne à chaque fois pour la mise en page du code...
Et seul les guillemets permettent ceci, enfin je crois!

signaler à un administrateur
Commentaire de Flachy Joe le 09/10/2006 19:14:58

A propos de relecture aussi, pourquoi ne pas remplacer la gros bloc d'"echo" par une fermeture de php "?>" puis une réouverture à la fin "<?php" ? Je crois même que la rapidité du code change...

signaler à un administrateur
Commentaire de alvinp le 09/10/2006 19:38:14

Ok je ferai celà ;)

signaler à un administrateur
Commentaire de webdeb le 09/10/2006 19:59:31

@Jean84 :

>> pour les extensions, il est conseille d'utiliser les fonctions str. Par contre l'utilisation que tu en fait n'est pas bonne (ou du moins n'est pas parfaite)

Pourquoi utiliser les fonctions de ch