Copyright sur images

Description

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 / Exemple :


<?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

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.