Thumbnail Berechnung Fehler ?

Starfox2007

Mitglied
Hi zusammen,

ich habe mir ein Galeriescript geschrieben, und berechne die Thumbnail Bilder für die Anzeige.

Die Bilder kommen in diesen Größen:

1280x960
960x1280
1280x960
1280x960
960x1280
1280x960
1280x960
1280x960
1280x960
1280x960
1280x960
1280x960
1280x960

Die berechneten Thumbnails sehen dann aber in selber Reihenfolge so aus:

250x188
141x188
141x106
141x106
80x106
80x60
80x60
80x60
80x60
80x60
80x60
80x60
80x60

Ich finde den Fehler in der Berechnung einfach nicht, das ganze läuft innerhalb einer foreach Schleife.

PHP:
$ratio_orig = $width/$height; 
$ratio_orig = round($ratio_orig, 2);

if ($thumbwidth/$thumbheight > $ratio_orig) {
   $thumbwidth = $thumbheight*$ratio_orig;
   $thumbwidth = round($thumbwidth);
} else {
   $thumbheight = $thumbwidth/$ratio_orig;
   $thumbheight = round($thumbheight);
}
 
Zum einen würde ich an deiner Stelle Mathematische berechnungen in einer Seperaten Klammer durchführen.
PHP:
// Breite durch Höhe teilen und auf 2 Kommastellen runden.
$ratio_orig = round( ($width / $height), 2); 

// Wenn Thumb Breite durch Höhe größer als (Original Breite durch Höhe) ist.
if ( ($thumbwidth / $thumbheight)  > $ratio_orig) {

   // Thumb Breite ist Höhe mal (Original Breite durch Höhe) auf zwei gerundet
   $thumbwidth = round( ($thumbheight * $ratio_orig) , 2);

// andernfalls
} else {

   // Thumb Höhe ist Breite durch (Original Breite durch Höhe)
   $thumbheight = round( ($thumbwidth / $ratio_orig));
}

Eine kleine Dokummentation ist auch hilfreich...

Wo bekommst du den $thumbwidth und $thumbheight her? (Bräuchte man zum ausrechnen und Fehler suche.)

Innerhalb der if Abfrage legst du jeweils nur die Breite ODER die Höhe des Thumbnails fest und nicht beides. Ist das gewollt?
 
Zuletzt bearbeitet:
Hab den Fehler inzwischen gefunden, hatte jeweils nicht die Höhe und Breite zusätzlich definiert.

Werde das mit den Klammern noch einbinden ;) thx.

PHP:
$ratio_orig = $width/$height;
$ratio_orig = round($ratio_orig, 2);

if ($thumbwidth/$thumbheight > $ratio_orig) {
       
	  $newthumbheight = $thumbheight;	  
      $newthumbwidth = round($thumbheight*$ratio_orig);
  
}else{
	
    $newthumbwidth = $thumbwidth;
    $newthumbheight = round($thumbwidth/$ratio_orig);
   
}
 
Zurück