Page 1 sur 1

Redimensionner des images proportionnellement

Posté : 03 avr. 2008, 12:07
par EsKa
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.

Posté : 03 avr. 2008, 12:32
par Ryle
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 :)

Posté : 03 avr. 2008, 12:57
par hakazizi
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

Posté : 03 avr. 2008, 15:07
par EsKa
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 ^^

Posté : 03 avr. 2008, 15:20
par Ryle
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 ;))

Posté : 03 avr. 2008, 16:34
par EsKa
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> ");
}