Image Resizer -> Bildfehler

mgraf

Erfahrenes Mitglied
Hallo,
vielleicht hat jemand kurz Zeit und kann hier drüberlesen, ich bekomme immer ein Bild mit Fehlern zurück. Ich such mir schon den Wusel und finde den/die Fehler nicht:

PHP:
    if($_SERVER['REQUEST_METHOD'] == 'POST') {
        if($_FILES['image']) {
          $filename = strtolower($_FILES['image']['name']);

          $file = explode(".",$filename);

          if($file[1] != 'jpg' || $file[1] != 'jpeg' || $file[1] != 'png'){
           list($owidth, $oheight) = getimagesize($_FILES['image']['tmp_name']);

            if($owidth >= $oheight)
             {
                $nwidth = '768';
                $nheight = $nwidth / $owidth * $oheight;

             }else{
                $nheight = '768';
                $nwidth = $nheight / $oheight * $owidth;
             }

             $resized = imagecreatetruecolor($nwidth, $nheight);

             if($file[1] == 'png')
               $original = imagecreatefrompng($_FILES['image']['tmp_name']);

             if($file[1] == 'jpg' || $file[1] == 'jpeg')
               $original = imagecreatefromjpeg($_FILES['image']['tmp_name']);

             imagecopyresampled($resized, $original, 0, 0, 0, 0, $nwidth, $nheight, $owidth, $oheight);

             header('Content-type: image/'.$file[1].'');
             header('Content-Disposition: attachment; filename="'.$file[0].'.'.$file[1].'"');

          }else{ echo 'falsches Format'; }
        }
    }


lg & danke
michi
 
Hey,
auf die Schnelle ist mir nichts aufgefallen. Wenn meine Bildschnipsel nicht funktionieren, mach ich immer die Header-Angaben raus und schau mir die PHP-Fehler an, die dann sichtbar werden. Desweiteren würde ich die $nwidth und $nheight nicht als String sondern als Integer speichern.
PHP:
$nwidth=768;
$nheight= (int)($nwidth / $owidth * $oheight); 
//oder
$nheight= round($nwidth / $owidth * $oheight);
Das ganze deswegen, weil es keine Komma-Pixel gibt.

Wie immer gilt, die PHP-Funktion error_reporting() sollte mit dem Parameter E_ALL bestückt werden und an den Anfang einer Datei geschrieben werden..
 
Hi,
"error_reporting" ist an, hatte es nur nicht mitgepostet:
PHP:
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

Was mich ja wundert, wenn ich ein Bild verkleinern lasse, erstellt er mir ja die TEMP-Datei (Resource id #4).
Naja, keine Ahnung, vielleicht hat von Euch ja jemand eine Idee. ich tu jetzt fernsehen (flash gordon ;-) )

Ich versuchs dann morgen weiter...

Hier nochmal der gesamte PHP Teil (hab noch ein paar kleinere Änderungen gemacht)
PHP:
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

    if($_SERVER['REQUEST_METHOD'] == 'POST') {
        if($_FILES['image']) {
          $filename = strtolower($_FILES['image']['name']);

          $file = explode(".",$filename);

          if($file[1] != 'jpg' || $file[1] != 'jpeg' || $file[1] != 'png'){

           list($owidth, $oheight, $ext) = getimagesize($_FILES['image']['tmp_name']);

            if($owidth >= $oheight)
             {
                $nwidth = 768;
                $nheight = round($nwidth / $owidth * $oheight);
             }else{
                $nheight = 768;
                $nwidth = round($nheight / $oheight * $owidth);
             }

             switch($ext)
              {
              case 2: //Jpeg
                $original = imagecreatefromjpeg($_FILES['image']['tmp_name']);
                break;
              case 3: //PNG
                $original = imagecreatefrompng($_FILES['image']['tmp_name']);
                break;
              }

             $resized = imagecreatetruecolor($nwidth, $nheight);

             imagecopyresampled($resized, $original, 0, 0, 0, 0, $nwidth, $nheight, $owidth, $oheight);

             header('Content-type: image/'.$file[1].'');

             if(!$_POST['show'] == True)
              {
                ImageJPEG ($resized, $original, 100);

              }else{
                header('Content-Disposition: attachment; filename="'.$file[0].'.'.$file[1].'"');              
              }

             imagedestroy($original);
             imagedestroy($resized);

          }else{ echo 'falsches Format'; }
        }
    }

lg
michi
 
Zurück