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

Bibliothèques et frameworks PHP Discussion :

[GD] Générer une miniature sans rogner l'image [Fait]


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre habitué Avatar de lolymeupy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2006
    Messages : 402
    Points : 180
    Points
    180
    Par défaut [GD] Générer une miniature sans rogner l'image
    Bonjour,
    je recherche une fonction qui génère une miniature d'une image sans rogner celle-ci...
    J'ai en effet trouvé une fonction qui générait une miniature d'une image mais celle-ci est rognée à droite, ce qui fait qu'elle ne correspond plus à l'image originale...

    Pour info, voici cette fonction, au cas où quelqu'un pourrait apporter les modifs nécessaires pour qu'elle ne rogne plus l'image originale :
    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
     
    /*--------------------------------------------------------------------------------*/
    /*-----fonction qui récupère une image en paramètre, change 
    les dimensions et l'enregistre dans le fichier images_photo-----------------------*/
     
    //$image est le nom de l'image uploadée
    function generer_miniature($image, $largeur, $hauteur, $qualite) {
     
    	// chemin de la miniature à générer
    	$dest = "fichier_photos_retaillees/$image";
     
    	// dossier où se trouve l'image source
    	$dossier = "fichier_photos_originales/";
     
    	$img_in = ImageCreateFromJpeg($dossier.'orig'.$image);
     
    	$size = getimagesize($dossier.'orig'.$image);
    	$l = $size[0];
    	$h = $size[1];
     
    	if (($l >= $largeur) && ($h>= $hauteur)) {
     
    		$new_haut = ($h * $largeur) / $l;
    		if($new_haut < $hauteur) {
     
    			$new_haut = $hauteur;
    			$new_larg = ($l * $hauteur) / $h;
     
    		} else {
     
    			$new_larg = $largeur;
     
    		}
     
    		// on réduit l'image à la largeur voulue
    		$img_out = imagecreatetruecolor($new_larg, $new_haut);
    		ImageCopyResampled($img_out, $img_in, 0, 0, 0, 0, ImagesX($img_out), ImagesY($img_out), $l, $h);
     
    		// création d'une image vide aux dimensions de la miniature
    		$im = imagecreatetruecolor($largeur, $hauteur);
     
    		// on copie la zone de l'image de hauteur voulue dans l'image vide
    		ImageCopy($im, $img_out, 0, 0, 0, 0, $largeur, $hauteur);
    		ImageJpeg($im, $dest, $qualite);
     
    		// destruction des images en mémoire
    		ImageDestroy($img_out);
    		ImageDestroy($im);
     
    	} elseif (($l < $largeur) && ($h >= $hauteur)) {
     
    		$img_out = imagecreatetruecolor($l, $h);
    		ImageCopyResampled($img_out, $img_in, 0, 0, 0, 0, ImagesX($img_out), ImagesY($img_out), $l, $h);
     
    		$im = imagecreatetruecolor($l, $hauteur);
     
    		ImageCopy($im, $img_out, 0, 0, 0, 0, $l, $hauteur);
    		ImageJpeg($im, $dest, $qualite);
     
    		// destruction des images en mémoire
    		ImageDestroy($img_out);
    		ImageDestroy($im);
     
    	} elseif ($l >= $largeur && $h < $hauteur) {
     
    		$img_out = imagecreatetruecolor($l, $h);
    		ImageCopyResampled($img_out, $img_in, 0, 0, 0, 0, ImagesX($img_out), ImagesY($img_out), $l, $h);
     
    		$im = imagecreatetruecolor($largeur , $h);
     
    		ImageCopy($im, $img_out, 0, 0, 0, 0, $largeur, $hauteur);
    		ImageJpeg($im, $dest, $qualite);
     
    		// destruction des images en mémoire
    		ImageDestroy($img_out);
    		ImageDestroy($im);
     
    	} elseif ($l < $largeur && $h< $hauteur) {
     
    		ImageJpeg($img_in, $dest, $qualite);
     
    	}
     
    	// destruction de l'image en mémoire
    	ImageDestroy($img_in);
     
    }
    Merci d'avance

  2. #2
    Membre confirmé
    Avatar de mathieugut
    Profil pro
    Webmaster
    Inscrit en
    Mars 2008
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2008
    Messages : 225
    Points : 476
    Points
    476
    Par défaut
    Salut,

    Tu devrais regarder cet article :

    http://mtodorovic.developpez.com/php...e_3#LIII-3.2.3 (Dernier paragraphe)

    Et la page suivant peut être utile aussi...

  3. #3
    Membre habitué Avatar de lolymeupy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2006
    Messages : 402
    Points : 180
    Points
    180
    Par défaut
    Ok merci mathieugut
    Je vais regarder ça.
    Sinon, par rapport à la fonction que j'utilise, je viens de remarquer qu'elle ne rogne que les images + larges que hautes...?
    Peut-être que c'est juste une petite "bidouille" à rajouter pour que ça ne le fasse plus ?

Discussions similaires

  1. Imprimer une page sans séparé les images
    Par kissmytoe dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 24/08/2007, 18h05
  2. Réponses: 5
    Dernier message: 08/09/2006, 12h12
  3. Comment générer une image dynamiquement ?
    Par K20 dans le forum Langage
    Réponses: 12
    Dernier message: 19/11/2005, 01h27
  4. [ImageMagick] Générer une image à partir de plusieurs images ?
    Par fichtre! dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 16/02/2005, 15h32
  5. [ImageMagick] Comment générer une image d'un code à entrer ?
    Par MiJack dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 16/01/2005, 21h29

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