Resizing von Bildern

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 :wink:

Fehlermeldung?
Stimmen die Pfade? $PicPathIn = dirname(__FILE__) . "/../../"; $PicPathOut = dirname(__FILE__) . "/../cache/";

Die Pfade stimmen, garantiert, es wird auch ein Bild im cache abgelegt, das ich auch ansehen kann im Browser, wenn ich es herutnerlade, aber wenn ich es per readfile, ausgebe gehts nicht.

[code] 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;

…[/code]
// edit
Fehlermeldung kommt auch keine…,
eben nur:
Die Grafik… kann nicht angezeigt werden, weil sie Fehler enthält.

ich tippe darauf das eine fehlermeldung ausgegeben wird und dadurch das bild vom browser nicht mehr erkannt wird.
(eigene erfahrung, schon mehrmals vorgekommen)

kommentier doch mal die “header('Content…” - zeilen aus.
evtl kannst du dann eine fehlermeldung sehen.

habs jetzt ohne readfile gemacht und es funktioniert
danke trotzdem