2010-03-31 6 views
1

je dois redimensionner les images en PHP en utilisant GD à une taille fixe, mais maintenir l'orientation (portrait/paysage), ce sont:PHP redimensionne fixe image, mais maintenir l'orientation

portrait: 375 x 500px paysage: 500 x 375px

Tout ce que j'ai essayé ignore toujours l'orientation et les rend tous paysage.

Quelqu'un peut-il aider?

+0

Des proportions jamais apprises à l'école primaire? –

Répondre

2

Vérifiez la largeur et la hauteur de l'image entrante. Si la largeur est plus grande que la hauteur, faites votre taille cible 500 x 375, sinon faites-en 375 x 500. Ensuite, exécutez le code de redimensionnement avec ces dimensions cibles.

+0

Et puisque vous avez déjà une ressource d'image gd, vous pouvez utiliser imagesx() et imagesy() pour obtenir la largeur et la hauteur. – VolkerK

1

Voici une méthode d'une classe d'images que j'utilise et qui calcule les dimensions mises à l'échelle d'une image. Cela fonctionne en ajustant une image dans une boîte carrée.

Vous pouvez définir $box = 500 puis passer le $x et $y de l'image que vous essayez de redimensionner et il renvoie toujours les dimensions redimensionnées correctes en maintenant le rapport d'aspect.

public static function fit_box($box = 200, $x = 100, $y = 100) 
{ 
    $scale = min($box/$x, $box/$y, 1); 
    return array(round($x * $scale, 0), round($y * $scale, 0)); 
} 
+0

Hm, la question ne concerne pas la mise à l'échelle mais la façon de déterminer si une image a une orientation portrait (hauteur> = largeur) ou paysage (largeur> = hauteur). – VolkerK

+0

Je supposais qu'il voulait maintenir le rapport d'aspect ainsi que l'orientation tout en redimensionnant les images, ce qui est ce que ma fonction va faire. La fonction gardera toujours la plus grande dimension à 500px tout en correspondant à la plus petite dimension sans avoir besoin de connaître l'orientation. –

Questions connexes