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