Redimensionner des images proportionnellement

Petit nouveau ! | 9 Messages

03 avr. 2008, 12:07

Bonjour,

Je fais suit à mon sujet PHP ( http://www.phpfrance.com/forums/voir_re ... php#240944 ).

Les images apparaissent :)

Mais j'aimerais que la taille reste dans des proportions fixées.

Au début, j'avais mis une largeur de 200 pixels ... mais du cout, les images haute sont disproportionnées par rapport aux autres ... Si je rajoute une hauteur, les images vont être déformées.

Code : Tout sélectionner

<img width=\"200\" src=\"image_aquarium/$idpage/$file\">
Donc :

Comment faire pour (en HTML si possible) donner une hauteur maximum et une longueur maximum ? Il y a-t-il une valeur à mettre pour dire de garder les proportions ?

Merci de votre aide.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 avr. 2008, 12:32

En HTML/CSS tu peux utiliser les attributs max-height et max-width, mais ils ne conservent les proportions que si un seul des deux est appliqué.

Pour conserver les proportions à tout les coups, il vaut mieux utiliser la fonction php getImageSize() qui te retourne la taille réelle de ton image et te permet du coup d'appliquer un ratio et spécifier les width et height qui conviennent :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 558 Messages

03 avr. 2008, 12:57

un peu dans le meme cas.
mais je n'utilise pas de valeur fixe j'utilise des pourcentage.
et aucune de mes pages n'ont la meme hauteur.
et je voudrais savoir si il est possible de conserver la proportion de l'image avec comme valeur width="100%" j'ai essayé heigth="100%" mais c'est la catastrophe.
P.S l'image que je met est toujours plus grande que le redimentionnement pour redimentionné dans le sens du retrecisement.
merci

Petit nouveau ! | 9 Messages

03 avr. 2008, 15:07

utiliser la fonction php getImageSize() qui te retourne la taille réelle de ton image et te permet du coup d'appliquer un ratio et spécifier les width et height qui conviennent
Jusque là, je comprends :P
<?php
list($width, $height, $type, $attr) = getimagesize("image_aquarium/$idpage/$file");
echo "<a href="image_aquarium/$idpage/$file" target="_blank"><img src="image_aquarium/$idpage/$file" $attr> </a>";
?> 
Alors en effet, il attribue bien la taille des images dans la page mais ...

Comme puis-je faire pour qu'il la redimensionne ?

Je suis perdu :lol:

NB : peut être déplacer le fichier dans php du coup ^^

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 avr. 2008, 15:20

Je ne dirais qu'un mot : Règle de trois :) (ouais, bon, ça va, ça fait trois mots... :roll: )

Selon que l'image soit plus haute que large ou plus large que haute :
- Calcul le rapport hauteur / hauteurMax et applique le à la largeur pour obtenir la largeur associée à la hauteurMax.
- De même, tu peux ainsi connaitre la hauteur associée à la largeurMax.

Tu peux ainsi spécifier les attributs width et height de ton image :)

(Je ne sais pas si c'est très clair, mais au besoin, y a plein d'exemples dans les commentaires de la doc pour la fonction getImageSize ;))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 9 Messages

03 avr. 2008, 16:34

Youpie :D

Un grand merci, j'ai enfin résolu mon problème et de la même manière terminé mon projet :wink:

Voilà mon résultat si ça interesse certain :
$img = getimagesize("image_aquarium/$idpage/$image");
if($img){
	$maxw = "190";
	$maxh = "190";
	$w = $img[0];
	$h = $img[1];
	$dim = array('w','h');
	foreach($dim AS $val){
		$max = "max{$val}";
		if(${$val} > ${$max} && ${$max}){
			$alt = ($val == 'w') ? 'h' : 'w';
			$ratio = ${$alt} / ${$val};
			${$val} = ${$max};
			${$alt} = ${$val} * $ratio;
		}
	}
	echo("<a href=\"image_aquarium/$idpage/$image\" target=\"_blank\"><img src=\"image_aquarium/$idpage/$image\"  width=\"$w\" height=\"$h\"></a> ");
}