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 "&" 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