2012-11-26 8 views
12

Come posso ottenere l'orientamento dell'immagine (orizzontale o verticale) di un'immagine (JPEG o PNG) in PHP?Recupera l'orientamento dell'immagine in PHP

Ho creato un sito php in cui gli utenti possono caricare immagini. Prima di ridurli ad una dimensione più piccola, voglio sapere come è orientata l'immagine per ridimensionarla correttamente.

Grazie per la risposta!

+1

http://php.net /manual/en/imagick.getimageorientation.php –

+0

che non fa parte delle specifiche jpg/png. sono solo griglie di pixel. puoi controllare se l'immagine è più ampia di quanto sia più alta, ma ciò non significa troppo. I dati EXIF ​​contengono dati di orientamento. –

risposta

29

ho sempre fatto questo:

list($width, $height) = getimagesize('image.jpg'); 
if ($width > $height) { 
    // Landscape 
} else { 
    // Portrait or Square 
} 
0

Semplice. Basta controllare la larghezza e l'altezza e confrontarli per ottenere l'orientamento. Quindi ridimensionare di conseguenza. Semplicemente sincero. Se si sta cercando di mantenere il rapporto di aspetto, ma inserirsi in qualche scatola quadrata si potrebbe usare qualcosa di simile:

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)); 
} 
1

Immagino che si potrebbe verificare se la larghezza dell'immagine è superiore alla lunghezza per il Paesaggio e per il Ritratto se il La lunghezza è più lunga della larghezza.

È possibile farlo con una semplice istruzione IF/ELSE.

Si potrebbe anche usare la funzione: Imagick::getImageOrientation

http://php.net/manual/en/imagick.getimageorientation.php

0

Io uso un ridimensionamento generalizzato verso il basso algoritmo simile. ..

Qui la dimensione massima è quella che ho inizializzato a qualcosa come 120 px per altezza e larghezza. . . in modo che la miniatura non superi quella dimensione. . ..

questo funziona per me, che è a prescindere dalla orientamento orizzontale o verticale e può essere applicato in generale

6
list($width, $height) = getimagesize("path/to/your/image.jpg"); 

if($width > $height) 
    $orientation = "landscape"; 
else 
    $orientation = "portrait";