Hallo,
ich möchte gerne Thumbnails von Bildern erstellen. Dabei möchte ich nicht das Original Format nehmen sondern die Thumbnails in 100 * 100 erstellen.
Die meisten Bildern haben ja nicht unbedingt ein quadratisches Format, daher möchte ich dann bei der längeren Seite die Ränder abschneiden so das das Bild Quadratisch wird aber die Mitte des Bildes im Thumb zu sehen ist.
Bei meinem aktuellen Ansatz, für Bilder die breiter als höher sind, nimmt er aber immer den rechten Bildteil. Hier der Ansatz:
Kurz zur Erläuterung:
- if prüft ob die Breite größer als die Länge ist
- $b berechnet die überschüssige Breite für jeweils eine Seite, damit das Bild Quadratisch wird, im imagecopyresampled der src_x Punkt, also bei einem Bild von 800*600 ist $b = 100
So wenn ich es jetzt richtig verstehe ist src_w die Breite ab dem Punkt src_x also in diesem Fall $a[0] - $b;
Aber wie gesagt er schneidet nicht von beiden Seiten aus ab.
ich möchte gerne Thumbnails von Bildern erstellen. Dabei möchte ich nicht das Original Format nehmen sondern die Thumbnails in 100 * 100 erstellen.
Die meisten Bildern haben ja nicht unbedingt ein quadratisches Format, daher möchte ich dann bei der längeren Seite die Ränder abschneiden so das das Bild Quadratisch wird aber die Mitte des Bildes im Thumb zu sehen ist.
Bei meinem aktuellen Ansatz, für Bilder die breiter als höher sind, nimmt er aber immer den rechten Bildteil. Hier der Ansatz:
PHP-Code:
$file = 'cache/1.jpg';
$im = @imagecreatetruecolor(100, 100);
if($a[0]>$a[1]){
$b = ($a[0] - $a[1]) /2;
$c = 0;
$d = $a[0] - $b;
$e = $a[1];
}
$source = imagecreatefromjpeg('1.jpg');
imagecopyresampled($im, $source, 0, 0, $b, $c, 100, 100, $d, $e);
imagejpeg($im, $file);
- if prüft ob die Breite größer als die Länge ist
- $b berechnet die überschüssige Breite für jeweils eine Seite, damit das Bild Quadratisch wird, im imagecopyresampled der src_x Punkt, also bei einem Bild von 800*600 ist $b = 100
So wenn ich es jetzt richtig verstehe ist src_w die Breite ab dem Punkt src_x also in diesem Fall $a[0] - $b;
Aber wie gesagt er schneidet nicht von beiden Seiten aus ab.
Kommentar