Team-Azerty Index du Forum Team-Azerty
Le Forum de l'association Team-Azerty
 
 Sujet vuSujet vu   FAQFAQ   RechercherRechercher   
Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Watermark à la volée en php

 
Poster un nouveau sujet   Répondre au sujet    Team-Azerty Index du Forum -> Software / Hardware
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
Aurelienazerty
Webmaster / Président


Age: 26
Inscrit le: 27 Sep 2002
Messages: 9853
Localisation: Vienne (Capitale du monde)

MessagePosté le: Mar 19 Déc 2006, 20:09:35    Sujet du message: Watermark à la volée en php Répondre en citant

Après la solution de david pour convertir en masse des images, voici un petit script qui permet de mettre des watermark sur des images à la volée.
Il faut tout d'abord un script php:
Code:
<?php
include ('config.lib.php');
if (isset($_GET["img"])) $img = REALPATH.$_GET["img"];
else $img = REALPATH."images/articles/15/Dscn8700.jpg";

//On tente de l'ouvrir
//Si ça ne marche pas, on vire le "wk_"
if (!@fopen($img, 'r'))
   $img = str_replace("wk_", "", $img);
   
//die($img);

mettre_watermark($img, REALPATH."images/lan/watermark.png");

function mettre_watermark($img, $watermark) {

   //on demande les dimension de l'image $img:
   $size = @getimagesize($img);   
   //largeur
   $largeur=$size[0];
   //longeur
   $longeur=$size[1];
   
   //on regarde si c'est png jpg gif
   $type=$size[2];
   //on charge l'image $img dans $img_big:
   switch($type)
   {
      case 2: $img_big = imagecreatefromjpeg($img); break;
      case 3:
         $img_big = imagecreatefrompng($img);
         imagesavealpha($img_big,TRUE);
         break;
      case 1: $img_big = imagecreatefromgif($img);break;
   }
   imagealphablending($img_big,TRUE);
   
   $destImage=imagecreatetruecolor($largeur,$longeur);
   imagecopyresampled($destImage,$img_big,0,0,0,0,$largeur,$longeur,$largeur,$longeur);
   
   //Copie du watermark
   //die($watermark);
   $size_water = getimagesize($watermark);   
   //largeur
   $largeur_water=$size_water[0];
   //longeur
   $longeur_water=$size_water[1];
   //on regarde si c'est png jpg gif
   $type_water=$size_water[2];
   
   switch($type_water)
   {
      case 2: $img_water = imagecreatefromjpeg($watermark); break;
      case 3:
         $img_water = imagecreatefrompng($watermark);
         imagesavealpha($img_water,TRUE);
         break;
      case 1: $img_water = imagecreatefromgif($watermark);break;
   }
   imagealphablending($img_water,TRUE);
   
   $img_water2 = @imagecreatetruecolor($largeur_water, $longeur_water);
   $bgc = imagecolorallocate($img_water2, 255, 255, 255 );
   ////Couleur de fond
   $c_fond = imagecolorallocate($img_water2, 255, 255, 255);//Rouge
   imagefilledrectangle($img_water2, 0,0, $largeur_water, $longeur_water, $c_fond);
   // on change les occurences $c_fond en transparent
   $trans=imagecolortransparent($img_water2, $c_fond);
   imagealphablending($img_water2,FALSE);
   imagesavealpha($img_water2,TRUE);
   imagecopyresampled($img_water2,$img_water,0,0,0,0,$largeur_water,$longeur_water,$largeur_water,$longeur_water);
   imagepng($img_water2,$img_water2);
   
   
   //Positionnement en bas à droite
   $position_y = $longeur - $longeur_water;
   $position_x = $largeur - $largeur_water;
   imagecopy($destImage, $img_water2, $position_x,$position_y,0,0,$largeur_water,$longeur_water);
   //on envoie l'image au navigateur:
   
   switch($type)
      {

         case 2:
         //on enverra au navigateur un fichier de type image au format jpeg:
         header("Content-type: image/jpeg");
         //on envoie l'image reduire au navigateur:
         @imagejpeg($destImage);
         break;

         case 3://on enverra au navigateur un fichier de type image au format jpeg:
         header("Content-type: image/png");
         //on envoie l'image reduire au navigateur:
         @imagepng($destImage);
         break;

         case 1: //on enverra au navigateur un fichier de type image au format jpeg:
         header("Content-type: image/gif");
         //on envoie l'image reduire au navigateur:
         @imagegif($destImage);
         break;

         default: false ;

   }
   imagedestroy($destImage);
   imagedestroy($img_water);
   imagedestroy($img_water2);
   imagedestroy($img_big);
}
?>
Ensuite, il faut modifier le fichier .htaccess de la manière suivante:
Code:
RewriteRule (.*)images/(.*)/wk_(.*) /include/watermark.php?img=/images/$2/wk_$3 [L]
Dans mon cas, toutes les images préfixées par un "wk_" seront "wartermarkées"

Exemple:
Revenir en haut
Aurelienazerty is offline View user's profile Send private message   Visiter le site web du posteur
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Team-Azerty Index du Forum -> Software / Hardware Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB 2.0.23 © 2001, 2005 phpBB Group :: Spelling by SpellingCow.
Traduction par : phpBB-fr.com
Le site Team-azerty.com est déclaré à la CNIL depuis le 6 juin 2005 (Numéro de Déclaration: 1098615)
L'association Team-azerty est une association loi 1901 déclarée en préfecture le 11 juin 2004 (No de parution: 20040027, No d'annonce: 687)
Plus d'informations dans la rubrique à propos