Enrico: Neuer Anlauf

Beitrag lesen

Hallo Tom,

ok, Deinen Vorschlag beherzigt und (in jetzt wesentlich längerem Code) umgesetzt:

  
<?php  
  
   ParameterHolen();  
  
   function ParameterHolen()  
   {  
      if (isset ($_GET['Bild']))  
      {  
         if ($_GET['Bild'] != "")  
         {  
            if (preg_match ("/^[A-Za-z\d{1,}]*$/", $_GET['Bild']))  
            {  
               $Bild = "../GRAFIKEN/SORTIMENT/" . $_GET['Bild'] . ".png";  
  
               if (isset ($_GET['Breite']))  
               {  
                  if ($_GET['Breite'] != "")  
                  {  
                     if (preg_match ("/^\d{1,}$/", $_GET['Breite']))  
                     {  
                        GroesseBerechnen($Bild, $_GET['Breite'], "");  
                     }  
                     else  
                     {  
                        echo 'Der Parameter "Breite" ist ungültig';  
                     }  
                  }  
                  else  
                  {  
                     echo 'Der Parameter "Breite" ist leer';  
                  }  
               }  
               else  
                  if (isset ($_GET['Hoehe']))  
                  {  
                     if ($_GET['Hoehe'] != "")  
                     {  
                        if (preg_match ("/^\d{1,}$/", $_GET['Hoehe']))  
                        {  
                           GroesseBerechnen($Bild, "", $_GET['Hoehe']);  
                        }  
                        else  
                        {  
                           echo 'Der Parameter "Hoehe" ist ungültig';  
                        }  
                     }  
                     else  
                     {  
                        echo 'Der Parameter "Hoehe" ist leer';  
                     }  
                  }  
                  else  
                  {  
                     echo "Breiten- oder Höhenangabe fehlt";  
                  }  
            }  
            else  
            {  
               echo 'Der Parameter "Bild" ist ungültig';  
            }  
         }  
         else  
         {  
            echo 'Der Parameter "Bild" ist leer';  
         }  
      }  
      else  
      {  
         echo 'Der Parameter "Bild" wurde nicht übergeben';  
      }  
   }  
  
   function GroesseBerechnen($Bild, $NeueBreite, $NeueHoehe)  
   {  
      $UrspruenglicheGroesse = getimagesize($Bild);  
  
      $UrspruenglicheBreite = $UrspruenglicheGroesse[0];  
      $UrspruenglicheHoehe  = $UrspruenglicheGroesse[1];  
  
      echo "Ursprüngliche Größe: " . $UrspruenglicheBreite . "x" . $UrspruenglicheHoehe . "<br>";  
  
      if ($NeueBreite != "")  
      {  
         $NeueHoehe  = round($UrspruenglicheHoehe / ($UrspruenglicheBreite / $NeueBreite));  
         $NeueBreite = round($UrspruenglicheBreite / ($UrspruenglicheHoehe / $NeueHoehe));  
  
         BildErzeugen($Bild, $UrspruenglicheBreite, $UrspruenglicheHoehe, $NeueBreite, $NeueHoehe);  
      }  
      else  
         if ($NeueHoehe != "")  
         {  
            $NeueBreite = round($UrspruenglicheBreite / ($UrspruenglicheHoehe / $NeueHoehe));  
            $NeueHoehe  = round($UrspruenglicheHoehe / ($UrspruenglicheBreite / $NeueBreite));  
  
            BildErzeugen($Bild, $UrspruenglicheBreite, $UrspruenglicheHoehe, $NeueBreite, $NeueHoehe);  
         }  
   }  
  
   function BildErzeugen($Bild, $UrspruenglicheBreite, $UrspruenglicheHoehe, $NeueBreite, $NeueHoehe)  
   {  
      $Bild = imagecreatefrompng($Bild);  
  
      if (!$Thumbnail = imagecreatetruecolor($NeueBreite, $NeueHoehe))  
      {  
         $Thumbnail = imagecreate($NeueBreite, $NeueHoehe);  
      }  
  
      if (!$Thumbnail = imagecopyresampled($Thumbnail, $Bild, 0, 0, 0, 0, $NeueBreite, $NeueHoehe, $UrspruenglicheBreite, $UrspruenglicheHoehe))  
      {  
         imagecopyresized($Thumbnail, $Bild, 0, 0, 0, 0, $NeueBreite, $NeueHoehe, $UrspruenglicheBreite, $UrspruenglicheHoehe);  
      }  
  
      // header("Content-type:image/png");  
  
      imagepng($Thumbnail, "", 9);  
   }  

Jetzt erhalte ich "nur" noch folgende Meldung:

Warning: imagepng() expects parameter 1 to be resource, boolean given

Der Rest paßt so oder gibt es noch etwas zu verbessern/korrigieren?

Ich werde, wenn alles 100% funktioniert, ternäre Operator verwenden, so wie es Matthias vorgeschlagen hat, aber jetzt macht es wenig Sinn, falls sich irgendwo vorher noch ein Fehler versteckt haben sollte (die testweisen echo-Ausgaben in den einzelnen Funktionen liefern bis zur letzten Funktion "BildErzeugen" die gewünschten Werte).

Gruß,
Enrico