IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Script envoie image avec réduction taille et qualité


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 60
    Points : 33
    Points
    33
    Par défaut Script envoie image avec réduction taille et qualité
    Bonjour,
    j'ai trouvé un script d'image qui fonctionne parfaitement.
    le seul hic c'est que je ne trouve pas où réduire le poid de l'image.

    les images font généralement 330ko..ce qui me parait un peu énorme.
    je souhaiterais être entre 100 et 150ko.

    je vous pose mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
     
    //chemin où stocker la petite et grand image
    $path_thumbs = "../photos/".$_GET['num_bebe'].""; 
    $path_big = "../photos/".$_GET['num_bebe'].""; 
     
     
    //nouvelle taille de l'image
    $img_thumb_width = 130; // en pixcel 
    $img_thumb_width2 = 640; // en pixcel 
     
    $extlimit = "yes"; //Est ce que vous voulez limiter l'extension des fichiers ?(yes/no) 
    // Extensions autorisés
    $limitedext = array(".gif",".jpg",".png",".jpeg",".bmp"); 
     
    // CREATION DES DOSSIERS POUR STOCKER LES PHOTOS
    // Controle sur le dossier de destination est bien en RW
    // please CHOMD them 777 
    if (!is_writeable($path_thumbs)){ 
    mkdir ("../photos/".$_GET['num_bebe']."", 0777);  
    } 
    if (!is_writeable($path_big)){ 
    mkdir ("../photos/".$_GET['num_bebe']."", 0777); 
    } 
     
    // QUAND ON VALIDE LE FORMULAIRE
    if (isset($_POST['upForm'])){ 
     
    $file_type = $_FILES['imgfile']['type']; 
    $file_name = $_FILES['imgfile']['name']; 
    $file_size = $_FILES['imgfile']['size']; 
    $file_tmp  = $_FILES['imgfile']['tmp_name']; 
     
    // On regarde si on a bien rempli le champ parcourir
    // dans le cas ou l'extension est mauvaise ou rien selectionné
    if(!is_uploaded_file($file_tmp)){ 
    echo "<img src='image/erreur.png' /> Veuillez sélectionner une image valide. <br /><br /> 
          <a href=\"$_SERVER[REQUEST_URI]\">[ Retour ]</a>"; 
    exit(); // on quitte le script 
    } 
    // controle l'extension du fichier
    $ext = strrchr($file_name,'.'); 
    $ext = strtolower($ext); 
    if (($extlimit == "yes") && (!in_array($ext,$limitedext))) { 
    echo "<img src='image/erreur.png' /> L'extension du fichier sélectionné n'est pas correcte. <br /><br />
    <a href=\"$_SERVER[REQUEST_URI]\"><center>[ Retour ]</center></a>"; 
    exit(); 
    } 
    //on recupere l'extension du fichier
    $getExt = explode ('.', $file_name); 
    $file_ext = $getExt[count($getExt)-1]; 
     
    //create a random file name 
    $rand_name = md5(time()); 
    $rand_name= rand(0,999999999); 
    //get the new width variable. 
    $ThumbWidth = $img_thumb_width; 
    $ThumbWidth2 = $img_thumb_width2; 
     
    //keep image type 
    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); 
    }elseif($file_type == "image/jpg"){ 
    $new_img = imagecreatefromgif($file_tmp);
    } 
    //list width and height and keep height ratio. 
    list($width, $height) = getimagesize($file_tmp); 
    $imgratio=$width/$height; 
    if ($imgratio>1){ 
    $newwidth = $ThumbWidth; 
    $newheight = $ThumbWidth/$imgratio; 
    }else{ 
    $newheight = $ThumbWidth; 
    $newwidth = $ThumbWidth*$imgratio; 
    } 
     
    $resized_img = imagecreatetruecolor($newwidth,$newheight); 
     
    imagecopyresampled($resized_img, $new_img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
    //save image 
    Imagepng ($resized_img,"$path_thumbs/$rand_name".'_mini.png'); 
     
    //list width and height and keep height ratio. 
    list($width, $height) = getimagesize($file_tmp); 
    $imgratio=$width/$height; 
    if ($imgratio>1){ 
    $newwidth = $ThumbWidth2; 
    $newheight = $ThumbWidth2/$imgratio; 
    }else{ 
    $newheight = $ThumbWidth2; 
    $newwidth = $ThumbWidth2*$imgratio; 
    } 
     
    $resized_img = imagecreatetruecolor($newwidth,$newheight); 
     
    imagecopyresampled($resized_img, $new_img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
    //save image 
    $file_ext = strtolower($file_ext);
    Imagepng ($resized_img,"$path_thumbs/$rand_name.$file_ext"); 
    ImageDestroy ($resized_img); 
    ImageDestroy ($new_img); 
    }

  2. #2
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut
    Bonjour,

    La fonction imagepng possède un paramètre quality : http://fr.php.net/Imagepng

    Cette fonction se trouve au bas de ton script...

    Règle n°1 du forum francophone : Parler le français...
    Pas de question technique par MP, le forum est fait pour çà, merci.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 60
    Points : 33
    Points
    33
    Par défaut
    je me doutais bien que ça se passait à ce niveau par rapport au déroulement du code mais il faut modifier quoi ? les 0 0 0 0 ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $resized_img = imagecreatetruecolor($newwidth,$newheight); 
     
    imagecopyresampled($resized_img, $new_img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
    //save image 
    Imagepng ($resized_img,"$path_thumbs/$rand_name".'_mini.png');

  4. #4
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut
    Il faut rajouter le paramètre quality omis dans l'appel que tu fais de la fonction imagepng (qui au passage ne prend pas de majuscule).

    Le paramètre quality est un int entre 0 et 9 (9 pour une qualité maximum), et est en 3ème position. Tout çà est précisé dans la doc.

    Règle n°1 du forum francophone : Parler le français...
    Pas de question technique par MP, le forum est fait pour çà, merci.

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/12/2011, 08h15
  2. Réduction de la taille des images avec Windows XP
    Par chouchou_82 dans le forum Windows XP
    Réponses: 0
    Dernier message: 07/07/2009, 16h04
  3. afficher une image avec une taille relative
    Par adien.fanget dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 21/03/2009, 11h27
  4. [GD] Redimensionner une image avec une taille fixe
    Par Aspic dans le forum Bibliothèques et frameworks
    Réponses: 29
    Dernier message: 20/07/2008, 14h57
  5. Recuperation de la taille d'une image avec la propriété SRC
    Par CDRIK dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 08/10/2004, 03h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo