Salut,

Je suis en train de faire une page php qui permet d'afficher des miniatures automatiquement et de leur donner une taille aléatoire. Pour celà je spécifie la largeur (width) et la hauteur s'ajuste automatiquement. Seulement voilà : certaines miniatures sont en formats portait et donc sont naturellement plus larges que les images paysage. Si je spécifie une largeur ET une hauteur les proportions de l'image ne sont pas conservées...

Question : comment spécifier une largeur ou une hauteur maximale pour une image sans la rogner (overflow) et en conservant ses proportions ???

Merci

++
Moi j'utilise un script PHP pour générer des miniatures jpeg de 179 pixels de large (la hauteur se règle proportionnellement).

Le code est largement perfectible (je débutais à l'époque...) mais ça peut te donner une idée de la façon à procéder.

A noter que si tu as beaucoup de miniatures à générer ça va être lourd à gérer pour le serveur, car tous les calculs sont faits à chaque fois que tu affiches la page et pour chaque image. Dans ce cas cette solution est à éviter, il faut stocker les miniatures quelque part.

miniature.php
<?php
header("Content-Type: image/jpeg");
$largeur=179;
if(strtoupper(substr(trim($pic),-4))=='.JPG')
{
  $img_in=imagecreatefromjpeg($pic);
  $hauteur=imagesy($img_in)/(imagesx($img_in)/$largeur);
  $img_out=imagecreatetruecolor($largeur, $hauteur); 
  imagecopyresampled($img_out,$img_in,0,0,0,0,imagesx($img_out),imagesy($img_out),imagesx($img_in),imagesy($img_in));
}
else
{
  $hauteur=100;
  $img_out=imagecreatetruecolor($largeur, $hauteur);
}
$thumb=imagejpeg($img_out);
echo $thumb;
?>

page html
<a href="photos/toto.JPG">
<img alt="toto" src="miniature.php?pic=photos/toto.JPG" />
</a>

Bon courage Smiley cligne
Modifié par 84mickael (05 Aug 2005 - 12:51)
Hum...

Merci pour ta proposition, c'est une solution en effet, mais j'ai justement beaucoup d'images en miniature et je les ais déjà converties. En gros ce que j'aimerai faire c'est un max-width et max-height qui puisse aussi fonctionner sur IE... ???
Tu peux récupérer les propriétés de tes images avec PHP (getimagesize), et calculer un height et un width qui soient proportionnels à ceux de l'image d'origine, et qui collent avec tes exigences.
ouep, c'est ce que je suis en train d'essayer de faire... avec imagesx et imagesy. Mais il faut que j'utilise la bibliothèque GD qui n'a pas l'air d'être chargée sur ma version de php. A suivre...

Merci en tout cas !
connecté
Administrateur
GD est fourni avec PHP depuis bien longtemps, ce serait bien étonnant que quelqu'un l'ait désactivé.
Bonjour,

Il y as longtemps, j'avait fait une fonction php pour ca :
function image($image,$taille) {
	$arr = getimagesize($image);
	$largeur=$arr[0];
	$hauteur=$arr[1];
	if($largeur <= $taille && $hauteur <= $taille) $img = "<img src='".$image."'>";
	else {
		if($hauteur < $largeur)		$img = "<img src='".$image."' width='".$taille."''>";
		if($hauteur > $largeur)		$img = "<img src='".$image."' height='".$taille."'>";
		if($hauteur == $largeur)	$img = "<img src='".$image."' height='".$taille."' width='".$taille."'>";
	}
	return $img;
}
Elle retourne le code html pour afficher l'image $img pour qu'elle rentre dans un carré de $taille sur $taille pixels. 5et oui, ya pas de alt, je connaissait pas encore les standart à l'époque... il suffit de rajouter un argument).

En espérant t'avori aidé.

a+