J'avais besoin de faire des tumbnails, alors je me suis fait une fonction.
ATTENTION, la fonction ne marche pas avec les BMP - WBMP, et il faut la GDLib spéciale GIF pour utiliser les GIF. Je suis sur qu'on peux faire cette fonction mieux, mais bon, elle marche, alors ;o)
Si tu trouves des bugs, merci de m'informer ;o)
<?
function change_image_size($rep_src, $rep_dest, $ext, $pre, $post, $nom_image, $largeur_voulu, $hauteur_voulu, $prop) {
/****
* Auteur : Thierry Corre
* Email : boool@mod-l.net
* Url : http://www.mod-l.net
* Description : Change la taille d'une image
****/
//$rep_src = Répertoire où se trouve l'image source (repertoire/, ou http://www.domain.com/repertoire/) (ne pas oublier le / finale))
//$rep_dest = Répertoire où se trouve l'image de destination (repertoire/, ou http://www.domain.com/repertoire/) (ne pas oublier le / finale))
//$ext = L'extention de l'image (bmp, jpeg, jpg, gif, png, wbmp)
//$pre = Ce que l'on veut mettre avant l'image, pour que le nom soit différent de l'image originale (image.jpg => petite_image.jpg)
//$post = Ce que l'on veut mettre après l'image, pour que le nom soit différent de l'image originale (image.jpg => image_petite.jpg)
//$nom_image = Le nom de l'image, sans extention (bob.jpg => bob, bob.img.jpg => bob.img)
//$largeur = C'est la largeur de l'image que l'on veut créer
//$hauteur = C'est la hauteur de l'image que l'on veut créer
//$prop = garder les proportions de l'image (true ou false)
//On se rend compte que bmp = wbmp, et que jpg = jpeg
If ( $ext == 'wbmp') $ext = 'bmp';
If ( $ext == 'jpeg') $ext = 'jpg';
//On donne l'adresse de l'image
$image_src = $rep_src . $nom_image . '.' . $ext;
$image_dest = $rep_dest . $pre . $nom_image . $post . '.' . $ext;
//On vérifie que le répertoire source existe
If ( @!is_dir($rep_src)) Return Print 'Le répertoire source <b>' . $rep_src . '</b> n\'existe pas<br>';
//On vérifie si les images de début et de fin exitent
If ( $image_src == $image_dest) Return Print 'L\'image source et l\'image cible sont les mêmes<br>';
If ( !file_exists($image_src)) Return Print 'L\'image ' . $image_src . ' n\'existe pas<br>';
If ( file_exists($image_dest)) Return Print 'L\'image ' . $image_dest . ' existe déjà<br>';
//On vérifie si le répertoire de destination existe, sinon on le crée
If (@!is_dir($rep_dest)) mkdir($rep_dest, '0777');
//On récupère la taille de l'image
$size = getimagesize($image_src);
$largeur_src = $size[0];
$hauteur_src = $size[1];
//On dit que si les proportions ne sont pas false, elle sont true
If ( $prop != false) $prop = true;
//On définie la largeur et la hauteur de l'image source si $prop == true
If ( $prop == true) {
$largeur_dest = ($largeur_src * $hauteur_voulu) / $hauteur_src;
$hauteur_dest = ($hauteur_src * $largeur_voulu) / $largeur_src;
If ($largeur_dest > $largeur_voulu) $largeur_dest = $largeur_voulu;
If ($hauteur_dest > $hauteur_voulu) $hauteur_dest = $hauteur_voulu;
}
Else {
$largeur_dest = $largeur_voulu;
$hauteur_dest = $hauteur_voulu;
}
//On récupère le contenu de l'image source
If ( $ext == 'bmp') $img_src = imagecreatefromwbmp($image_src);
If ( $ext == 'gif') $img_src = imagecreatefromgif ($image_src);
If ( $ext == 'jpg') $img_src = imagecreatefromjpeg($image_src);
If ( $ext == 'png') $img_src = imagecreatefrompng ($image_src);
//On crée l'image cible
$img_dest = imagecreate($largeur_dest, $hauteur_dest);
//On remplis l'image cible
imagecopyresized($img_dest, $img_src, 0, 0, 0, 0, $largeur_dest, $hauteur_dest, $largeur_src, $hauteur_src);
If ( $ext == 'bmp') imagewbmp($img_dest, $image_dest);
If ( $ext == 'gif') imagegif ($img_dest, $image_dest);
If ( $ext == 'jpg') imagejpeg($img_dest, $image_dest);
If ( $ext == 'png') imagepng ($img_dest, $image_dest);
//On libère la mémoire
imagedestroy($img_src);
imagedestroy($img_dest);
Return Print '<img src=' . $image_dest . '> : ' . $image_dest . '<br>';
}
?> |