Hallo zusammen
Ich habe schon mehrere Codes für Thumbnailerstellung angesehen und ausprobiert - sowohl on-the-fly als auch solche, die das TN abspeichern. Ich möchte jedoch, dass das thumbnail immer eine feste grösse hat, und zwar 130x170 pixel - egal ob es ein Hoch- oder Breitformat-Bild ist. Zudem soll das Bild nicht verzogen sein.
Jedoch muss auf dem Thumbnail nicht alles zu sehen sein, sondern einfach ein möglichst grosser Ausschnitt, welcher das Seitenverhältnis 130:170 px hat. Stichwort hierbei ist die "Crop-Funktion".
So weit habe ich mir auch schon etwas "zusammengebastelt" bzw. ein vorhandenes Script verwendet, welches so weit auch schon ganz gut funktioniert. Nur wird der Bildausschnitt nicht aus der Mitte genommen, und genau da stecke ich nun fest. Ich habe es bei einem Breitbild versucht, und der Ausschnitt stammt definitiv nicht von der Mitte...
Hier der Code:
Hat da vielleicht jemand eine Idee? Oder kennt jemand ein Script, welches (besser) funktioniert und das gewünschte ebenfalls liefert?
Vielen Dank schon im Voraus.
Vincent2k6
PS: Und da ich neu bin: Ein "Hallo" an alle hier im Forum.
Ich habe schon mehrere Codes für Thumbnailerstellung angesehen und ausprobiert - sowohl on-the-fly als auch solche, die das TN abspeichern. Ich möchte jedoch, dass das thumbnail immer eine feste grösse hat, und zwar 130x170 pixel - egal ob es ein Hoch- oder Breitformat-Bild ist. Zudem soll das Bild nicht verzogen sein.
Jedoch muss auf dem Thumbnail nicht alles zu sehen sein, sondern einfach ein möglichst grosser Ausschnitt, welcher das Seitenverhältnis 130:170 px hat. Stichwort hierbei ist die "Crop-Funktion".
So weit habe ich mir auch schon etwas "zusammengebastelt" bzw. ein vorhandenes Script verwendet, welches so weit auch schon ganz gut funktioniert. Nur wird der Bildausschnitt nicht aus der Mitte genommen, und genau da stecke ich nun fest. Ich habe es bei einem Breitbild versucht, und der Ausschnitt stammt definitiv nicht von der Mitte...
Hier der Code:
PHP-Code:
<?php
// Thumbnail Groesse.
$width = 120;
$height = 160;
// Groesse des Bildes definieren
$dimensions = getimagesize('bild1.jpg');
// Prepare canvas
$canvas = imagecreatetruecolor($width,$height);
$piece = imagecreatefromjpeg('bild1.jpg');
// Resize und Crop festlegen.
if($dimensions[0] > $dimensions[1])
{
$newwidth = $dimensions[1] / 2;
$newheight = $dimensions[0] / 2;
}
else
{
$newwidth = $dimensions[0] / 2;
$newheight = $dimensions[1] / 2;
}
$cropLeft = ($newwidth/2) - ($width/2);
$cropHeight = ($newheight/2) - ($height/2);
// CopyResized
imagecopyresized($canvas, $piece, 0,0, $cropLeft, $cropHeight, $width,
$height, $newwidth, $newheight);
// Img speichern oder fehler ausgeben.
if (imagejpeg($canvas,'bild1-neu.jpg',90)) {
echo 'Image crop successful';
} else {
echo 'Image crop failed';
}
// Clean-up
imagedestroy($canvas);
imagedestroy($piece);
?>
Hat da vielleicht jemand eine Idee? Oder kennt jemand ein Script, welches (besser) funktioniert und das gewünschte ebenfalls liefert?
Vielen Dank schon im Voraus.
Vincent2k6
PS: Und da ich neu bin: Ein "Hallo" an alle hier im Forum.
Kommentar