bild erzeugen mit php
Danzi
- php
0 suit0 Texter mit x0 suit
1 Cheatah0 Florian Stascheck
hallo leute!
ich hab mit php ein bild erzeugt und will nun unter dem bild einen html text anfügen, jedoch funktioniert dass nicht so wie ich es will, da ja der dokumenttyp dann ein gif wird...
kann mir bitte jemand weiterhelfen?
Code:
<?php
diagramm(10, "1KN:-30:rot, 2KN:20:schwarz, 3KN:5:gruen, 4KN:35:gelb, 5KN:10:lila, 6KN:10:lila, 7KN:10:lila", "m", 350, 200);
function diagramm($abstand, $daten, $einheit, $breite, $hoehe)
{
$schrift = 3;
$legende_abstand = 10;
$daten = explode(", ", $daten);
$werte = array();
$bezeichnungen = array();
$farben = array();
for($i=0; $i<sizeof($daten); $i++) {
$temp = explode(":", $daten[$i]);
array_push($bezeichnungen, $temp[0]);
array_push($werte, $temp[1]);
array_push($farben, $temp[2]);
if($abstand_text < imagefontwidth($schrift) * strlen($temp[0]))
$abstand_text = imagefontwidth($schrift) * strlen($temp[0]);
}
$abstand_text_h = imagefontheight($schrift);
$bild = imagecreatetruecolor($breite, $hoehe);
$farbe_hintergrund = imagecolorexact($bild, 245, 245, 245);
$farbe_text = imagecolorexact($bild, 0, 0, 0);
$farbe_zwischen = imagecolorexact($bild, 220, 220, 220);
$farbe_rot = imagecolorexact($bild, 255, 0, 0);
$farbe_gruen = imagecolorexact($bild, 0, 255, 0);
$farbe_schwarz = imagecolorexact($bild, 0, 0, 0);
$farbe_gelb = imagecolorexact($bild, 255, 255, 0);
$farbe_lila = imagecolorexact($bild, 255, 0, 255);
imagefill($bild, 0, 0, $farbe_hintergrund);
$balken_x = $abstand;
$balken_y = $hoehe - $abstand;
$balken_b = 2 * $abstand;
$diagramm_h = $hoehe - 2 * $abstand;
$balken_versatz = 0;
$legende_x = $balken_x + sizeof($werte) * $balken_b + (sizeof($werte) - 1) * $abstand + 2 * $abstand;
$legende_y = $hoehe - $abstand - $legende_abstand;
$legende_b = $legende_x + $legende_abstand;
$legende_h = $legende_y + $legende_abstand;
$legende_versatz = 0;
for($i=0; $i<sizeof($werte); $i++) {
$prozent = 100 / array_sum($werte) * $werte[$i];
$balken_h = $diagramm_h / 100 * $prozent;
$wert = $werte[$i]." ".$einheit;
$farbe = "farbe_".$farben[$i];
//imagefilledrectangle($bild, $balken_x + $balken_versatz, $abstand, $balken_x + $balken_versatz + $balken_b, $hoehe - $abstand, $farbe_zwischen);
//Diagramm zeichnen
imagefilledrectangle($bild, $balken_x + $balken_versatz, $balken_y - $balken_h, $balken_x + $balken_versatz + $balken_b, $balken_y, ${$farbe});
imagestring($bild, $schrift, $balken_x + $balken_versatz + 2, $balken_y - $balken_h - $abstand_text_h, $werte[$i], $farbe_text);
//Legende zeichnen
imagefilledrectangle($bild, $legende_x, $legende_y - $legende_versatz, $legende_b, $legende_h - $legende_versatz, ${$farbe});
imagestring($bild, $schrift, $legende_x + 2 * $legende_abstand, $legende_y - $legende_versatz, $bezeichnungen[$i], $farbe_text);
imagestring($bild, $schrift, $legende_x + 3 * $legende_abstand + $abstand_text, $legende_y - $legende_versatz, $wert, $farbe_text);
$balken_versatz = $balken_versatz + 3 * $abstand;
$legende_versatz = $legende_versatz + 2 * $legende_abstand;
}
header("Content-type: image/gif");
imagegif($bild);
}
?>
mfg Daniel
ich hab mit php ein bild erzeugt und will nun unter dem bild einen html text anfügen, jedoch funktioniert dass nicht so wie ich es will, da ja der dokumenttyp dann ein gif wird...
kann mir bitte jemand weiterhelfen?
was du vorhast geht schlichtweg garnicht ;)
erzeuge ein html-file und binde dein on-the-fly erzeugtes bild dort mittels img-element (oder als hintergrund per css ein)
ich hab mit php ein bild erzeugt und will nun unter dem bild einen html text anfügen, jedoch funktioniert dass nicht so wie ich es will, da ja der dokumenttyp dann ein gif wird...
kann mir bitte jemand weiterhelfen?was du vorhast geht schlichtweg garnicht ;)
es gibt nur "geht" oder "geht nicht" - ein "geht in 40% der browser am markt" ist für mich ein "geht nicht" bei "geht in 95% der browser am markt" lasse ich mich schon eher zu "geht" überreden :D
Hi,
ich hab mit php ein bild erzeugt und will nun unter dem bild einen html text anfügen,
die mir bekannten Grafikformate erlauben so etwas höchstens in Form eines Kommentars, der selbstverständlich nicht die Darstellung verändert - und üblicherweise als Klartext vorgesehen ist.
jedoch funktioniert dass nicht so wie ich es will, da ja der dokumenttyp dann ein gif wird...
Richtig. Ein Request hat exakt einen Response. Und wenn Du willst, dass das ganze auch in der Realität genutzt werden kann, hat dieser Response exakt einen Content-Type.
kann mir bitte jemand weiterhelfen?
Zwei Content-Types <=> zwei Responses <=> zwei Requests.
Cheatah
Hallo,
u.U. einen String zeichnen.
mfg, Flo