2012-11-26 4 views
12

Wie kann ich die Bildausrichtung (Querformat oder Hochformat) eines Bildes (JPEG oder PNG) in PHP erhalten?Bildausrichtung in PHP abrufen

Ich habe eine PHP-Website erstellt, wo Benutzer Bilder hochladen können. Bevor ich sie auf eine kleinere Größe skaliere, möchte ich wissen, wie das Bild ausgerichtet ist, um es richtig skalieren zu können.

Danke für Ihre Antwort!

+1

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

+0

das ist nicht Teil der jpg/png-Spezifikationen. Sie sind nur Raster von Pixeln. Sie könnten prüfen, ob das Bild breiter als größer ist, aber das bedeutet nicht zu viel. EXIF-Daten enthalten Orientierungsdaten. –

Antwort

29

angewendet werden, kann ich das immer getan haben:

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

Einfach. Überprüfen Sie einfach die Breite und Höhe und vergleichen Sie sie, um Orientierung zu erhalten. Dann ändere die Größe entsprechend. Geradeaus wirklich. Wenn Sie versuchen, Seitenverhältnis beibehalten, aber passen in eine quadratische Box könnten Sie so etwas wie folgt verwenden:

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

Ich nehme an, Sie könnten überprüfen, ob die Bildbreite länger ist als die Länge für Landschaft und Portrait, wenn der Länge ist länger als Breite. Sie können das mit einer einfachen IF/ELSE Anweisung tun.

Sie können auch die Funktion: Imagick::getImageOrientation

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

0

Ich benutze eine verallgemeinerte Verkleinerung Algorithmus wie. ..

function calculateSize($width, $height){ 

      if($width <= maxSize && $height <= maxSize){ 
       $ratio = 1; 
      } else if ($width > maxSize){ 
       $ratio = maxSize/$width; 
       } else{ 
        $ratio = maxSize/$height; 
        } 

     $thumbwidth = ($width * $ratio); 
     $thumbheight = ($height * $ratio); 
     } 

Hier maximale Größe ist die, die ich zu etwas wie 120px für Höhe und Breite initialisiert. . . damit das Thumbnail diese Größe nicht überschreitet. . ..

Dies funktioniert für mich, die unabhängig von Hoch- und Querformat ist und in der Regel

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

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