Enrico: Neuer Anlauf

Beitrag lesen

Hallo dedlfix,

mit nachfolgendem Code funktioniert nun zumindest schonmal die direkte Ausgabe im Browser per Eingabe in der Adressleiste mittels Verkleinern.php?Bild=GewandungMuetzen1&Hoehe=95:

  
<?php  
  
   ParameterHolen();  
  
   function ParameterHolen ()  
   {  
      if (isset ($_GET['Bild']) && $_GET['Bild'] !== "")  
      {  
         $Bild = "../GRAFIKEN/SORTIMENT/" . $_GET['Bild'] . ".png";  
  
         if (file_exists ($Bild))  
         {  
            if (isset ($_GET['Breite']) && $_GET['Breite'] !== "")  
            {  
               if  (is_numeric ($_GET['Breite']))  
                  GroesseBerechnen ($Bild, $_GET['Breite'], "");  
               else  
                  echo 'Die Variable "Breite" ist keine Zahl';  
            }  
            else  
               if (isset ($_GET['Hoehe']) && $_GET['Hoehe'] !== "")  
               {  
                  if  (is_numeric ($_GET['Hoehe']))  
                     GroesseBerechnen ($Bild, "", $_GET['Hoehe']);  
                  else  
                     echo 'Die Variable "Hoehe" ist keine Zahl';  
               }  
               else  
                  echo 'Funktion "ParameterHolen": Breiten- oder Höhenangabe fehlt';  
         }  
         else  
            echo 'Die Datei "' . $Bild . '" konnte nicht gefunden werden';  
      }  
      else  
         echo 'Die Variable "Bild" besteht nicht oder ist leer';  
   }  
  
   function GroesseBerechnen ($Bild, $xNeu, $yNeu)  
   {  
      if ($Groesse = getimagesize ($Bild))  
      {  
         $x = $Groesse[0];  
         $y = $Groesse[1];  
  
         if ($xNeu != "")  
         {  
            $yNeu = round ($y / ($x / $xNeu));  
            $xNeu = round ($x / ($y / $yNeu));  
  
            BildErzeugen ($Bild, $x, $y, $xNeu, $yNeu);  
         }  
         else  
            if ($yNeu != "")  
            {  
               $xNeu = round ($x / ($y / $yNeu));  
               $yNeu = round ($y / ($x / $xNeu));  
  
               BildErzeugen ($Bild, $x, $y, $xNeu, $yNeu);  
            }  
            else  
               echo 'Funktion "GroesseBerechnen": Breiten- oder Höhenangabe fehlt';  
      }  
      else  
         echo 'Funktion "GroesseBerechnen": "getimagesize" ist fehlgeschlagen';  
   }  
  
   function BildErzeugen ($Bild, $x, $y, $xNeu, $yNeu)  
   {  
      $Bild = imagecreatefrompng ($Bild);  
  
      if (! $Thumbnail = imagecreatetruecolor ($xNeu, $yNeu))  
         $Thumbnail = ImageCreate($xNeu,$yNeu);  
  
      if (! imagecopyresampled ($Thumbnail, $Bild, 0, 0, 0, 0, $xNeu, $yNeu, $x, $y))  
         imagecopyresized ($Thumbnail, $Bild, 0, 0, 0, 0, $xNeu, $yNeu, $x, $y);  
  
      $Bild = $Thumbnail;  
  
      header("Content-type:image/png");  
  
      imagepng ($Bild, "", 9);  
   }  
  
?>  

Gut, die Grafik wird noch auf schwarzem Hintergrund und nicht transparent dargestellt, was ich noch lösen muss, aber die verkleinerte Anzeige klappt zumindest schon mal.

Ist das mit dem Erhalt der vormaligen Transparenz kompliziert?

Nebenbei: wenn ich, so wie Chris es vorgeschlagen hatte, das "&" escape und statt dessen "&amp;" schreibe, dann läuft mir das Skript bei der Abfrage nach Breite und Höhe in den finalen else-Zweig und spuckt mir meine Fehlermeldung aus, dass Breite oder Höhe nicht angegeben wurden.

Was jetzt aber noch nicht funktioniert, ist die Einbindung in den bestehenden HTML-Code mittels $Ausgabe .= '<img src="Verkleinern.php?Bild=' . $Bild . '&Hoehe=95">';

Das ist so ärgerlich, so kurz vor einer weiteren Ziellinie wieder zu stolpern :-|

Die zu verkleinernden Grafiken sollten in obiger Grafik zwischen der Artikelbezeichnung und dem Preis stehen.

An der Variablen $Ausgabe kann es aber nicht liegen, denn wenn ich Grafiken hart einbinde, dann werden diese angezeigt.

Liegt es daran, dass ich keine Größenangaben hinterlegt habe?

Wieso klappt die direkte Eingabe im Browser, nicht aber die Ausgabe innerhalb des HTML-Codes?

Gruß,
Enrico