Bonjour,
J'utilise le script expliqué ici : h ttp://www.grafikart.fr/tutoriels/gestion-images-php-52
pour la redimension et la création de nouvelles images à l'upload et il fonctionne parfaitement bien et est très clair.

Cependant j'aimerais maintenant utiliser ce même script car clair dans sa construction lors d'un upload mais en prenant comme valeur uniquement le width et le height se ferait automatiquement exactement comme le fait à l'affichage width=400 (le height est définit automatiquement proportionnellement).

Sauf que le script demande en paramètre à la fois le width et le height. j'aimerais savoir si il y avais une solution pour ne renseigner que le width.

Merci beaucoup

1 réponse


function crop($img,$dest,$largeur=0,$hauteur=0){
$dimension=getimagesize($img);
$ratio = $dimension[0] / $dimension[1];
// Création des miniatures
if($largeur==0 && $hauteur==0){ $largeur = $dimension[0]; $hauteur = $dimension[1]; }
else if($hauteur==0){ $hauteur = round($largeur / $ratio); }
else if($largeur==0){ $largeur = round($hauteur * $ratio); }

if($dimension[0]>($largeur/$hauteur)*$dimension[1] ){ $dimY=$hauteur; $dimX=round($hauteur*$dimension[0]/$dimension[1]); $decalX=($dimX-$largeur)/2; $decalY=0;}
if($dimension[0]<($largeur/$hauteur)*$dimension[1]){ $dimX=$largeur; $dimY=round($largeur*$dimension[1]/$dimension[0]); $decalY=($dimY-$hauteur)/2; $decalX=0;}
if($dimension[0]==($largeur/$hauteur)*$dimension[1]){ $dimX=$largeur; $dimY=$hauteur; $decalX=0; $decalY=0;}
$miniature =imagecreatetruecolor ($largeur,$hauteur);
$ext = end(explode('.',$img));
if(in_array($ext,array('jpeg','jpg','JPG','JPEG'))){$image = imagecreatefromjpeg($img); }
elseif(in_array($ext,array('png','PNG'))){$image = imagecreatefrompng($img); }
elseif(in_array($ext,array('gif','GIF'))){$image = imagecreatefromgif($img); }
else{ return false; }
imagecopyresampled($miniature,$image,-$decalX,-$decalY,0,0,$dimX,$dimY,$dimension[0],$dimension[1]);
imagejpeg($miniature,$dest,90);

return true;
}

Tu peux effectivement utiliser ce script en ne mettant que le width ca marchera ^^ le height a une valeur par défault à 0, or quand il est a 0 il va chercher le height proportionnel ^^
j'espère que ca t'aura aidé: