largeur fixe thumbnail

Invité
Invité n'ayant pas de compte PHPfrance

27 mars 2008, 16:31

Bonjour à tous,
j'utilise actuellement un petit script qui redimensionne des images pour générer des miniatures:
function thumbnail($img,$uploaddir,$thumb_height) 
{ 
	if ($img!="") {
    $src_img = imagecreatefromjpeg($img); 
    $origw     = imagesx($src_img); 
    $origh     = imagesy($src_img); 
    $new_h     = $thumb_height; 
    $diff     = $origh / $new_h; 
     
    $ratio = $origw / $origh; 
     
    $new_w = $new_h * $ratio; 
    $dst_img = imagecreatetruecolor($new_w,$new_h); 
    imagecopyresampled($dst_img,$src_img,0,0,0,0,$new_w,$new_h,imagesx($src_img),imagesy($src_img)); 

    imagejpeg($dst_img, $uploaddir, 100); 
    return true; 
	}
} 

Il fonctionne très bien. Mon problème est qu'il prend la hauteur en paramètres. Toutes les images ont donc la même hauteur.

Je voudrais un redimensionnement qui prenne la largeur en paramètres, pour que toutes les images aient la même largeur.

J'ai tenté de simplement inverser largeur et hauteur dans le script mais ça donne des miniatures très déformées.

Auriez vous une astuce ou un script thumbnail qui prenne la largeur en paramètre?
Merci pour vos réponses.

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

27 mars 2008, 16:56

Il ne faut pas inverser hauteur et largeur partout sans se poser de question.. il te faut calculer la nouvelle hauteur à partir de la largeur du thumb, au lieu de calculer la nouvelle largeur à partir de la hauteur du thumb :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 445 Messages

27 mars 2008, 17:33

Le mieux est de créer une image qui respecte le ratio L/H

Tu pourrais très bien mettre cette image sur une fond noir qui aura toujours la même taille.

Après, suivant tes images, tu auras :
- Des images avec des bandeaux noirs en haut et en bas (les bandeaux seront horizontaux)
- Des images avec des bandeaux noirs a droite et à gauche (les bandeaux seront verticaux)