8791 sujets

Développement web côté serveur, CMS

Bonjour,

j'utilise cette fonction pour redimentionner une image, ça fonctionne bien mon seule problème est que si l'image envoyé est en portrait(verticale) il me la redimentione en 300px de large et la ma miniature est trop grande.
En vertical ça fonctionne bien.

// Redim image mini
		if($ext == 'jpg' || $ext == 'jpeg') {$im = imagecreatefromjpeg($dossier_tmp.$filename.'.'.$ext);}
		if($ext == 'png') {$im = imagecreatefrompng($dossier_tmp.$filename.'.'.$ext);}
		if($ext == 'gif') { $im = imagecreatefromgif($dossier_tmp.$filename.'.'.$ext);}
		
		$ox = imagesx($im);
		$oy = imagesy($im);
		
		$nx = 300;
		$ny = floor($oy *($nx/$ox));
		
		$nm = imagecreatetruecolor($nx,$ny);
		
		imagecopyresized($nm, $im, 0,0,0,0, $nx,$ny,$ox,$oy);
		
		imagejpeg($nm, $dossier_mini.$filename.'.'.$ext);
		


Pouvez-vous m'aider ?
Merci d'avance
Il faut que tu fasses un test sur les dimensions de ton image, si hauteur > largeur = tu redimensionnes suivant la hauteur, si hauteur < largeur = tu redimensionnes suivant la largeur.
Bonjour,

Je crois que j'ai trouvé, ça fonctionne pouvez-vous juste me dire si c'est cohérent?

if($ext == 'jpg' || $ext == 'jpeg') {$im = imagecreatefromjpeg($dossier_tmp.$filename.'.'.$ext);}
		if($ext == 'png') {$im = imagecreatefrompng($dossier_tmp.$filename.'.'.$ext);}
		if($ext == 'gif') { $im = imagecreatefromgif($dossier_tmp.$filename.'.'.$ext);}
		
		$x = imagesx($im);
		$y = imagesy($im);
		$taillemax=300;

$size = getimagesize($dossier_tmp.$filename.'.'.$ext);

$x=$size[0];
$y=$size[1];

if ($x > $y)
{
 $y=$y*(($taillemax)/$x);
 $x=$taillemax;
}
if ($y > $x)
{
  $x=$x*(($taillemax)/$y);
 $y=$taillemax;
}
if ($y == $x)
{
  $x=$taillemax;
  $y=$taillemax;
}

$nm = imagecreatetruecolor ($x, $y);


imagecopyresized($nm, $im,0,0,0,0,$x,$y,$size[0],$size[1]);
		
imagejpeg($nm, $dossier_mini.$filename.'.'.$ext);