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