php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Crop Image nach skalierung


 
breakbox
12-02-2007, 14:29 
 
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:
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;
}

Kann mir jemand helfen? Denkfehler?

Danke schonmal im voraus!

 
wahsaga
12-02-2007, 14:32 
 
$cropLeft = ($newwidth/2) - ($width/2);
$cropHeight = ($newheight/2) - ($height/2);
Fein, dass du diese Werte ausrechnest - nur wozu eigentlich? Benutzen tust du sie ja danach nicht mehr.


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:41 Uhr.