Creation de miniatures d'images avec watermark

Eléphant du PHP | 428 Messages

15 oct. 2009, 17:20

Bonjour,

Je désepère ... j'essaye en vain depuis des heures à rassembler deux codes pour pouvoir créer des miniatures d'images avec watermark intégré.

J'ai beau essayer un peu tout, ca foire intégralement lorsque je désire imbriquer un imagecopymerge dans mon code ci-dessous.
Pouvez-vous m'aider à réaliser cet exercice ?

Voici le code de redimensionnement des images
// ON VA CREER LES MINIATURES D'IMAGES
// On teste si le fichier n'est pas vide
if($file_size){
// On crée les images en fonction du type
if($file_type == "image/pjpeg" || $file_type == "image/jpeg"){
$new_img = imagecreatefromjpeg($file_tmp);
}elseif($file_type == "image/x-png" || $file_type == "image/png"){
$new_img = imagecreatefrompng($file_tmp);
}elseif($file_type == "image/gif"){
$new_img = imagecreatefromgif($file_tmp);
}

// On crée l'image MINI
// On liste la hauteur et la lageur et on défini le ratio pour les MINI
list($width, $height) = getimagesize($file_tmp);
$imgratio=$width/$height;

$newwidth = $Thumbs_Mini_Height*$imgratio;
$newheight = $Thumbs_Mini_Height;

// On teste si la fonction imagecreatetruecolor existe.
if (function_exists(imagecreatetruecolor)){
$resized_img = imagecreatetruecolor($newwidth,$newheight);
}else{
die('Erreur: Veuillez vous assurez que votre hébergement possède bien la librairie GD version 2 ou +');
}
imagecopyresampled($resized_img, $new_img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
//sauvegarde de l'image
ImageJpeg ($resized_img,''.$dirpictures.$CfgDir_Thumbs.'/'.$CfgDir_Thumbs_Mini.'/'.$file_name.'',$Thumbs_Mini_Quality);
ImageDestroy ($resized_img);
chmod("".$CfgRelDir."/".$dirpictures.$CfgDir_Thumbs."/".$CfgDir_Thumbs_Mini."/".$file_name."", 0644);

// DEBUG OUTPUT
//echo 'MINI Thumb: <a href='.$dirpictures.'thumbs/mini/'.$file_name.'><i>'.$file_name.'</i></a> a correctement été créé<br />';



Et voici le code pour le watermark que j'ai trouvé sur le web
<?php
header("Content-Type: image/jpeg");
require_once ('.dirsys/conf/config.inc.php');

// On chope la taille de l'image pour le watermark
$size = getimagesize($_GET['photo']);

// on teste la taille (height) pour y attribuer le bon logo watermark
if ($size[1] == 113) {
$watermark = imagecreatefrompng(''.$Watermark_Logo_Small.'');
} elseif ($size[1] == 480) {
$watermark = imagecreatefrompng(''.$Watermark_Logo_Medium.'');
} elseif ($size[1] > 480) {
$watermark = imagecreatefrompng(''.$Watermark_Logo_Big.'');
}

// On travaille les images et on sors l'output
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);

$image = imagecreatetruecolor($watermark_width, $watermark_height);
$image = imagecreatefromjpeg($_GET['photo']);

$dest_x = $size[0] - $watermark_width - 5;
$dest_y = $size[1] - $watermark_height - 5;

imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, $Watermark_Opacity);
imagejpeg($image);
imagedestroy($image);
imagedestroy($watermark);

?>
Pouvez-vous me montrer comment je dois procéder pour créer les miniatures et y apposer un watermark (image PNG) en même temps ?

Merci pour votre aide,
Raph

Eléphant du PHP | 428 Messages

15 oct. 2009, 19:15

C'est bon ... j'ai trouvé :
// ON VA CREER LES MINIATURES D'IMAGES
// On teste si le fichier n'est pas vide
if($file_size){
// On crée les images en fonction du type
if($file_type == "image/pjpeg" || $file_type == "image/jpeg"){
$new_img = imagecreatefromjpeg($file_tmp);
}elseif($file_type == "image/x-png" || $file_type == "image/png"){
$new_img = imagecreatefrompng($file_tmp);
}elseif($file_type == "image/gif"){
$new_img = imagecreatefromgif($file_tmp);
}

// On crée l'image MINI
// On liste la hauteur et la lageur et on défini le ratio pour les MINI
list($width, $height) = getimagesize($file_tmp);
$imgratio=$width/$height;

$newwidth = $Thumbs_Mini_Height*$imgratio;
$newheight = $Thumbs_Mini_Height;

// On teste si la fonction imagecreatetruecolor existe.
if (function_exists(imagecreatetruecolor)){
$resized_img = imagecreatetruecolor($newwidth,$newheight);
}else{
die('Erreur: Veuillez vous assurez que votre hébergement possède bien la librairie GD version 2 ou +');
}
// On crée l'image redimensionnée
imagecopyresampled($resized_img, $new_img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

// ON VERIFIE SI ON APPOSE OU PAS LE WATERMARK POUR LES MINIS
if (isset ($_GET['intitle']) AND $_GET['action'] == 'wtmrk') {
///// WATERMARK START
//dimensions de l'image principale redimentionnée
$width_thumb=imagesx($resized_img);
$height_thumb=imagesy($resized_img); 

// On crée le logo Watermark
$watermark = imagecreatefrompng(''.$Watermark_Logo_Small.'');

//récuperation des dimensions de l'image du copyright
$watermark_width=imagesx($watermark);
$watermark_height=imagesy($watermark);

//calcul la position du copyright sur l'axe des abscisses et ordonées
if ($Watermark_Position == 'bottom') {
$x=($width_thumb-$watermark_width) - 5;
$y=($height_thumb-$watermark_height) - 5;
} elseif ($Watermark_Position == 'center') {
$x=($width_thumb-$watermark_width) / 2;
$y=($height_thumb-$watermark_height) / 2;
}

//réalisation de la superposition
imagecopymerge($resized_img, $watermark, $x, $y, 0, 0, $watermark_width, $watermark_height, $Watermark_Opacity); 
ImageDestroy ($watermark);
////// WATERMARK END
}

//sauvegarde de l'image
if($file_type == "image/pjpeg" || $file_type == "image/jpeg"){
ImageJpeg ($resized_img,''.$dirpictures.$CfgDir_Thumbs.'/'.$CfgDir_Thumbs_Mini.'/'.$file_name.'',$Thumbs_Mini_Quality) or die ("Erreur de création");
}elseif($file_type == "image/x-png" || $file_type == "image/png"){
ImagePng ($resized_img,''.$dirpictures.$CfgDir_Thumbs.'/'.$CfgDir_Thumbs_Mini.'/'.$file_name.'',$Thumbs_Mini_Quality) or die ("Erreur de création"); 
}elseif($file_type == "image/gif"){
ImageGif ($resized_img,''.$dirpictures.$CfgDir_Thumbs.'/'.$CfgDir_Thumbs_Mini.'/'.$file_name.'',$Thumbs_Mini_Quality) or die ("Erreur de création"); 
}
ImageDestroy ($resized_img);
chmod("".$CfgRelDir."/".$dirpictures.$CfgDir_Thumbs."/".$CfgDir_Thumbs_Mini."/".$file_name."", 0644);

// DEBUG OUTPUT
//echo 'MINI Thumb: <a href='.$dirpictures.'thumbs/mini/'.$file_name.'><i>'.$file_name.'</i></a> a correctement été créé<br />';