Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Images > GD
GD Forum d'entraide pour l'extension GD permettant de manipuler des images en PHP. Avant de poster -> tutoriels GD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/06/2008, 11h46   #1
Membre habitué
 
Avatar de lolymeupy
 
Inscription : octobre 2006
Messages : 329
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : octobre 2006
Messages : 329
Points : 106
Points : 106
Envoyer un message via MSN à lolymeupy
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 :
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
lolymeupy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2008, 13h02   #2
Membre éclairé
 
Avatar de mathieugut
 
Inscription : mars 2008
Messages : 216
Détails du profil
Informations personnelles :
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : mars 2008
Messages : 216
Points : 394
Points : 394
Envoyer un message via MSN à mathieugut
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...
__________________
Bienvenue dans la matrice, attention à bien lire les règles...

.::Mon espace perso developpez.com ::.
mathieugut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2008, 14h09   #3
Membre habitué
 
Avatar de lolymeupy
 
Inscription : octobre 2006
Messages : 329
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : octobre 2006
Messages : 329
Points : 106
Points : 106
Envoyer un message via MSN à lolymeupy
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 ?
lolymeupy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h10.


 
 
 
 
Partenaires

Hébergement Web