#1 10-11-2009 20:49:24

zig
Administrateur
Date d'inscription: 06-09-2008
Messages: 130

[Script PHP] Création de thumbnails en php

Salut

Voici une fonction pour réduire vos images à la volée smile

Code:

function reduire_image($fichierimage,$nomimage,$path_thumbs,$ThumbWidth,$path_big,$GrandeWidth)
{

    $extlimit = "yes";
    $limitedext = array(".jpg",".png",".gif");
    //On vérifie que les répertoires ont les droits d'écritures (CHMOD 777)
    if (!is_writeable($path_thumbs)){
      die ("Erreur: Le dossier <b>($path_thumbs)</b> n'est pas accessible");
    }
    if(!empty($path_big))
    {
      if (!is_writeable($path_big)){
        die ("Erreur: Le dossier <b>($path_big)</b> n'est pas accessible");
      }
    }
    $file_type = $fichierimage['type'];
    $file_name = $fichierimage['name'];
    $file_size = $fichierimage['size'];
    $file_tmp = $fichierimage['tmp_name'];
        if ($file_size >= 2*1024*1024)
        {
            echo "Le fichier de votre photo est trop gros. Elle n'a donc pas été ajoutée à votre fiche.<br /><br />";
            return false;
        }


    if(is_uploaded_file($file_tmp)){
      //On récupère l'extension de l'image
      $ext = strrchr($file_name,'.');
      $ext = strtolower($ext);
      if (($extlimit == "yes") && (!in_array($ext,$limitedext))) {
        echo "L'extension de l'image sélectionnée n'est pas correcte. <br /><a href=\"javascript:history-back();\">back</a>";
        exit();
      }
      $getExt = explode ('.', $file_name);
      $file_ext = $getExt[count($getExt)-1];

      //On garde le type de l'image
      if($file_size){
        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 redimensionne la thumbnail
        list($width, $height) = getimagesize($file_tmp);
      if ($width >= $height && $width > $ThumbWidth){
       $newwidthvignette = $ThumbWidth;
           $newheightvignette = $height * $ThumbWidth / $width;
       }
      else if ($height > $width && $height > $ThumbWidth){
       $newheightvignette = $ThumbWidth;
           $newwidthvignette = $width * $ThumbWidth / $height;
       }
      else {
       $newheightvignette = $height;
           $newwidthvignette = $width;
       }

        $resized_img = imagecreatetruecolor($newwidthvignette,$newheightvignette);
        imagecopyresampled($resized_img, $new_img, 0, 0, 0, 0, $newwidthvignette, $newheightvignette, $width, $height);

        //on enregistre l'image

        if($file_type == "image/pjpeg" || $file_type == "image/jpeg"){
          Imagejpeg ($resized_img,$path_thumbs."/".$nomimage.".jpg");
        }elseif($file_type == "image/x-png" || $file_type == "image/png"){
          Imagepng ($resized_img,$path_thumbs."/".$nomimage.".png");
        }elseif($file_type == "image/gif"){
          Imagegif ($resized_img,$path_thumbs."/".$nomimage.".gif");
        }
        ImageDestroy ($resized_img);
        ImageDestroy ($new_img);
        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);
        }
               if(!empty($path_big))
      {

      if ($width >= $height && $width > $GrandeWidth){
       $newwidthgrande = $GrandeWidth;
           $newheightgrande = $height * $GrandeWidth / $width;
       }
      else if ($height > $width && $height > $GrandeWidth){
       $newheightgrande = $GrandeWidth;
           $newwidthgrande = $width * $GrandeWidth / $height;
       }
      else {
       $newheightgrande = $height;
           $newwidthgrande = $width;
       }

                 $resized_img = imagecreatetruecolor($newwidthgrande,$newheightgrande);
        imagecopyresampled($resized_img, $new_img, 0, 0, 0, 0, $newwidthgrande, $newheightgrande, $width, $height);

          //on enregistre l'image

          if($file_type == "image/pjpeg" || $file_type == "image/jpeg"){
            Imagejpeg ($resized_img,$path_big."/".$nomimage.".jpg");
          }elseif($file_type == "image/x-png" || $file_type == "image/png"){
            Imagepng ($resized_img,$path_big."/".$nomimage.".png");
          }elseif($file_type == "image/gif"){
          Imagegif ($resized_img,$path_big."/".$nomimage.".gif");
          }
          ImageDestroy ($resized_img);
          ImageDestroy ($new_img);

        }
        }
      }
      if($file_ext=="jpg" OR $file_ext=="JPG")
      {
        //return $file_ext;
        $file_ext="jpg";
        return $file_ext;
      }elseif($file_ext=="png" OR $file_ext=="PNG")
      {
        $file_ext="png";
        return $file_ext;
      }elseif($file_ext=="gif" OR $file_ext=="GIF")
      {
        $file_ext="gif";
        return $file_ext;
      }

}

à appeler comme ça :

Code:

$extension=reduire_image($_FILES['image'],"nomimage","image/petite","100","image/grande","500");

et la fonction vous retourne l'extension de l'image

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB
Traduction par FluxBB.fr

© acteursduweb.com