2009-11-13 8 views
2

Je me demandais si un utilisateur télécharge une image comment puis-je obtenir le rapport d'aspect de cette image lors de la création du pouce. Je sais que ma largeur sera de 180px mais comment puis-je obtenir la hauteur.Comment obtenir le format d'image en utilisant PHP?

Voici le code que j'ai trouvé ci-dessous.

list($width, $height) = getimagesize($file) ; 

if ($width >= 180){ 
    $modwidth = 180; 
    $modheight = ; 
} else { 
    $modwidth = $width; 
    $modheight = $height; 
} 

Répondre

2

que vous souhaitez conserver le même rapport d'aspect

donc quelque chose comme ça $modheight = ((180.0/$width) * $height);

il vous donnera une image avec 180 de large et quelle que soit la hauteur, mais avec la même rapport que celui d'origine.

+0

Que diriez-vous avec max-width et max-hauteur? – GianFS

3

Essayez-vous de faire quelque chose comme ça?

$targetsize = $x = $y = 180; 
list($width, $height) = getimagesize($file); 

if($width > $targetsize || $height > $targetsize) { 
    $aspect = $width/$height; 

    if($aspect < 1) $x *= $aspect; // portrait 
    else $y /= $aspect; // landscape 

    resizeImageFunctionHere($file, $x, $y); 
} 

Mais si vous voulez toujours 180 de large indépendamment du fait que la photo est en mode portrait ou non:

$targetwidth = $x = $y = 180; 
list($width, $height) = getimagesize($file); 

if($width > $targetsize) { 
    $aspect = $width/$height; 
    $y *= $aspect; 

    resizeImageFunctionHere($file, $x, $y); 
} 
+0

J'essaye de redimensionner des images qui ont une largeur plus grande que 180px si la largeur des images n'est pas plus grande que 180px garder l'image telle qu'elle est. Dans le but de faire le pouce. Cela a-t-il du sens? – ImAGe

+1

semble bon pour moi, assurez-vous de vérifier x/zéro! – echo

+0

Got it, ajouté à la vérification de la taille. Le premier exemple vérifie l'orientation et les tailles à pas plus de $ targetize, tandis que les deuxièmes tailles à $ targetize large indépendamment de l'orientation. – Rob

Questions connexes