Hi,
Ich habe gerade ein Problem beim Resizen von Bildern und finde den Fehler nicht, vllt. findet jemand ihn ja.
Ich habe folgende Funktion:
[code]/**
-
resizes an pic to 100 x 150
*@name avresize
*@param string - filename
*@param string - new filename - optional
*@return null
*/
function avresize($name, $file = null)
{
$PicPathIn = dirname(FILE) . “/…/…/”;
$PicPathOut = dirname(FILE) . “/…/cache/”;
$bild=$name;if($size= GetImageSize($PicPathIn.$bild)) { $breite=$size[0]; $hoehe=$size[1]; $h = 150; $w = $h / 3 * 2; $neueHoehe = $h; $neueBreite = $w; $breite2 = $breite * $neueHoehe / $hoehe; $snap = ($breite2 - $neueBreite) / 2 ; if($snap < 0) { $snap = 0; } } else { header('Location: '.$name); } $neubild = $PicPathOut."AV".$neueHoehe."x".$neueBreite.md5($bild); if($size[2]==1) { // GIF $endung = "gif"; if($file == null) { header('content-type: image/gif'); } if(file_exists($neubild.".".$endung) && $file == null) { $exp_gmt = gmdate("D, d M Y H:i:s", time() + 7200) ." GMT"; header("Expires: " . $exp_gmt); header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($neubild.".".$endung)).' GMT'); header("Cache-Control: public, max-age=" . 7200); readfile($neubild.".".$endung); exit; } else { $altesBild= ImageCreateFromGif($PicPathIn.$bild); $neuesBild= imagecreatetruecolor($neueBreite + $snap * 2,$neueHoehe); $neuesBild2 = imagecreatetruecolor($neueBreite,$neueHoehe); imageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite + $snap * 2,$neueHoehe,$breite,$hoehe); imagedestroy($altesBild); imagecopy($neuesBild2,$neuesBild,0,0,$snap,0,$neueBreite,$neueHoehe); imagedestroy($neuesBild); imagejpeg($neuesBild2,$neubild.".".$endung); } } else if($size[2]==2) { // JPG $endung = "jpg"; if($file == null) { header('Content-Type: image/jpeg'); header('Accept-Ranges: bytes'); $exp_gmt = gmdate("D, d M Y H:i:s", time() + 7200) ." GMT"; header("Expires: " . $exp_gmt); header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($neubild.".".$endung)).' GMT'); header("Cache-Control: public, max-age=" . 7200); } if(file_exists($neubild.".".$endung) && $file == null) { readfile($neubild.".".$endung); exit; } else { $altesBild= ImageCreateFromJPEG($PicPathIn.$bild); $neuesBild= imagecreatetruecolor($neueBreite + $snap * 2,$neueHoehe); $neuesBild2 = imagecreatetruecolor($neueBreite,$neueHoehe); imageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite + $snap * 2,$neueHoehe,$breite,$hoehe); imagedestroy($altesBild); imagecopy($neuesBild2,$neuesBild,0,0,$snap,0,$neueBreite,$neueHoehe); imagedestroy($neuesBild); imagejpeg($neuesBild2,$neubild.".".$endung); } } else if($size[2]==3) { // PNG $endung = "png"; if($file == null) { header('content-type: image/png'); } if(file_exists($neubild.".".$endung)) { $exp_gmt = gmdate("D, d M Y H:i:s", time() + 7200) ." GMT"; header("Expires: " . $exp_gmt); header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($neubild.".".$endung)).' GMT'); header("Cache-Control: public, max-age=" . 7200); readfile($neubild.".".$endung); exit; } else { $altesBild= ImageCreateFromPNG($PicPathIn.$bild); $neuesBild= imagecreatetruecolor($neueBreite + $snap * 2,$neueHoehe); $neuesBild2 = imagecreatetruecolor($neueBreite,$neueHoehe); imageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite + $snap * 2,$neueHoehe,$breite,$hoehe); imagedestroy($altesBild); imagecopy($neuesBild2,$neuesBild,0,0,$snap,0,$neueBreite,$neueHoehe); imagedestroy($neuesBild); imagejpeg($neuesBild2,$neubild.".".$endung); } } else { header('content-type: text/html'); throwError('20','Picture not Allowed!',''); } if($file == null) { readfile($neubild.".".$endung); exit; } else { if($f = fopen($file, 'w')) { fwrite($f,file_get_contents($neubild.".".$endung)); fclose($f); } else { return false; } }
}[/code]
Und die rufe ich dann so auf:
Das funktioniert leider nicht, deshalb frage ich hier.
Danke schonmal im Vorraus