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 :

Optimisation du code sur le redimensionnement d'images


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 27
    Points : 12
    Points
    12
    Par défaut Optimisation du code sur le redimensionnement d'images
    Bonjour,

    Avant de commencer - Oui je sais c'est le énième code de génération de vignette à la volée.

    Mais je recherche l'oeil d'un expert du php pour optimiser ce script à tous les formats (jpg,gif,bmp) .
    De plus il faut garder la proportion de l'image avec une largeur fixe de 100 pixels. et le tout a la volée

    Le script :

    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
     
    <?
    function redimage($img_src,$dst_w,$dst_h) {
       // Lit les dimensions de l'image
       $size = GetImageSize($img_src);  
       $src_w = $size[0]; $src_h = $size[1];
       // Teste les dimensions tenant dans la zone
       $test_h = round(($dst_w / $src_w) * $src_h);
       $test_w = round(($dst_h / $src_h) * $src_w);
       // Si Height final non précisé (0)
       if(!$dst_h) $dst_h = $test_h;
       // Sinon si Width final non précisé (0)
       elseif(!$dst_w) $dst_w = $test_w;
       // Sinon teste quel redimensionnement tient dans la zone
       elseif($test_h>$dst_h) $dst_w = $test_w;
       else $dst_h = $test_h;
     
       // Affiche les dimensions optimales
       echo "WIDTH=".$dst_w." HEIGHT=".$dst_h;
    }
    ?>
     
    <IMG SRC="monimage.jpg" <?redimage("monimage.jpg",XX,YY)?>>

    Merci pour votre aide

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Points : 123
    Points
    123
    Par défaut
    Voila, ça fonctionne pour les trois format cités, et garde la largeur à 100.

    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
     
    <?php
    <?php
    function redimage($img_src) {
    	// Lit les dimensions de l'image
    	$size = GetImageSize($img_src);  
    	$src_w = $size[0]; 
    	$src_h = $size[1];
     
    	// on regarde la largeur de l'image
    	if($src_w != 100){
    		// si différente à 100
    		// on fait un produit en croix avec une nouvelle largeur fixe de 100
    		$dst_h = round((100 * $src_h) / $src_w);
    		echo 'WIDTH=100 HEIGHT='.$dst_h; 
    	}else{
    		// si egale à 100, on garde les ancienne taille
    		echo 'WIDTH='.$src_w.' HEIGHT='.$src_h; 
    	}
    }
    ?>
     
    <IMG SRC="imgjpeg.jpg" <?php redimage("imgjpeg.jpg");?>>
    Je ne suis même pas sur que le round soit obligatoire.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Points : 123
    Points
    123
    Par défaut
    tu peux même encore simplifier :

    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
     
    <?php
    function redimage($img_src) {
    	// Lit les dimensions de l'image
    	$size = GetImageSize($img_src);  
    	$src_w = $size[0]; 
    	$src_h = $size[1];
     
    	// on regarde la largeur de l'image
    	if($src_w != 100){
    		// si différente à 100
    		// on fait un produit en croix avec une nouvelle largeur fixe de 100
    		$dst_h = round((100 * $src_h) / $src_w);
    		echo '<IMG SRC="'.$img_src.'" WIDTH="100" HEIGHT="'.$src_h.'">'; 
    	}else{
    		// si egale à 100, on garde les ancienne taille
    		echo '<IMG SRC="'.$img_src.'" WIDTH="'.$src_w.'" HEIGHT="'.$src_h.'">'; 
    	}
    }
    ?>
    Après dans ton code tu as juste à marquer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    redimage('monimage.jpg');

  4. #4
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    Merci pour ton aide et ta réponse

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Optimisation du code sur les boucles
    Par izguit dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/08/2009, 15h05
  2. [BufferedImage] Redimensionner / Sauvegarder image sur disque
    Par nicolas.pied dans le forum Multimédia
    Réponses: 1
    Dernier message: 17/04/2007, 02h54
  3. Réponses: 8
    Dernier message: 14/09/2006, 16h43
  4. Experts Mysql : Optimiser une requete sur codes postaux
    Par El Riiico dans le forum Requêtes
    Réponses: 6
    Dernier message: 20/01/2006, 18h00

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