Hallo,
ich habe mir ein Script gebastelt, welches beim Upload eines Bildes (jpg) proportional skaliert und neu speichert. Nun will ich mittels "crop" die Höhe bzw Breite auf ein einheitliches Mas bringen (60px).
Habe dazu ein paar threads gelesen und auch ne Lösung gefunden!
Allerdings wird das Bild erst beschnitten und dann skaliert. Ich möchte erst auf die Höhe bzw Breite skalieren und dann den Überhang abschneiden.
Hier mal mein Code:
Kann mir jemand helfen? Denkfehler?
Danke schonmal im voraus!
ich habe mir ein Script gebastelt, welches beim Upload eines Bildes (jpg) proportional skaliert und neu speichert. Nun will ich mittels "crop" die Höhe bzw Breite auf ein einheitliches Mas bringen (60px).
Habe dazu ein paar threads gelesen und auch ne Lösung gefunden!
Allerdings wird das Bild erst beschnitten und dann skaliert. Ich möchte erst auf die Höhe bzw Breite skalieren und dann den Überhang abschneiden.
Hier mal mein Code:
PHP-Code:
function thumbnail($imgfile)
{
$tmp_file = $imgfile;
$imgfile = "../kollektion/img/".$imgfile;
//Max. Größe des Thumbnail (Höhe und Breite)
$thumbsize = 60;
//Speicherort der Thumbnails
$ordner = "../kollektion/img/thumb/";
//Infos über das Bild
$endung = strrchr($imgfile,".");
$info = getimagesize($imgfile);
$width = $info[0];
$height = $info[1];
$imgratio=$width/$height;
//Ist das Bild höher als breit?
if($imgratio<1)
{
$newwidth = $thumbsize;
$newheight = $thumbsize/$imgratio;
}
else
{
$newheight = $thumbsize;
$newwidth = $thumbsize*$imgratio;
}
//Bild erstellen
$thumb = imagecreate ($newwidth,$newheight);
if($endung == ".jpg" OR $endung == ".JPG")
{
imageJPEG($thumb,$ordner."temp.jpg");
$thumb = imagecreatefromjpeg($ordner."temp.jpg");
$source = imagecreatefromjpeg($imgfile);
}
else if($endung == ".gif")
{
imageGIF($thumb,$ordner."temp.gif");
$thumb = imagecreatefromgif($ordner."temp.gif");
$source = imagecreatefromgif($imgfile);
}
// Resize und Crop festlegen.
if($info[0] > $info[1])
{
$newwidth = $info[1] / 2;
$newheight = $info[0] / 2;
}
else
{
$newwidth = $info[0] / 2;
$newheight = $info[1] / 2;
}
$cropLeft = ($newwidth/2) - ($width/2);
$cropHeight = ($newheight/2) - ($height/2);
imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
//Bild speichern
if($endung == ".png")
imagepng($thumb,$ordner.$imgfile);
else if($endung == ".gif")
imagegif($thumb,$ordner.$tmp_file);
else
imagejpeg($thumb,$ordner.$tmp_file,100);
//Pfad zu dem Bild zurückgeben
return $ordner.$imgfile;
}
Danke schonmal im voraus!
Kommentar