bild erzeugen

burgis

Grünschnabel
Hi,

ich habe ein Problem bei einem Poll, den ich geschrieben hab.
Und zwar will ich die ausgezählten Stimmen als Grafik darstellen lassen.
Ich schaffe es aber nicht mal "normal" ein Blid zu erzeugen. Immer wenn ich ein Bild in anderem Code drin ereugen will kommt nur:
"GIF87ad€æÿæ,d,„?©Ëí£œ´Ú‹³Þ¼û†âH–扦êʶî ÇòL×ö?çúÎ÷þ g; "
o. Ä..
Wenn ich jedoch das Bild alleine in einer Seite erzeuge dann funktionierts.

Ich habe diesen Code benutzt:

<?php
$img=imagecreate(100,20);
$background=imagecolorallocate($img,230,255,230);
imagerectangle($img,0,0,30,20, $background);
ImageGif($img);
ImageDestroy($img);
?>



Ich hoffe Ihr habt mein Problem verstanden und könnt mir helfen.
 
Hi!

Du musst noch den Content-Type im Header mitsenden:

PHP:
<?php header('Content-Type: image/gif'); ?>

Mamphil
 
naja

wenn ich das mache dann bekomm ich einen Error, weil ich den Header nich mitten im Code senden kann, wenn ich es aber oben an den Anfang des Codes setze bringt es mit für das Bild nichts.
 
ich hab's so gemacht
PHP:
<?php
header('Content-Type: image/gif');
include('./includes/connect.inc.php');
$sql_image = "SELECT * FROM images";
$sql_query = mysql_query($sql_image) or die(mysql_error());
while($picout = mysql_fetch_assoc($sql_query))
{
echo $picout['image'];
}
?>
dann gibt er mir aber auch nur
GIF89a……÷CLLJYVabWNPMGSQDMMHVTEPOJXUMPMLPM`bWDNMGNLFQPLZV_aWEMLEONFMLIWUIWTHUS`aVDLLORMMZV[`WKYVDMLFRPHTRPSNSUOHNLQTO......usw. aus
 
Hi,
für Polls würde ich dir empfehlen:
Mach dir ein Gif, 1px breit, beliebige höhe. Dann in HTML ein Image-Tag erstellst, wo du die Prozentzahl benutzt, um eine Breite für das Bild zu machen!

mfg
 
Hi!

Du musst beachten, dass wenn du den Header sendest weder ein Fehler im Script noch ein echo auftauchen darf!

Ich zeig dir mal ein gutes Besipiel:

Erstell eine php:

PHP:
<?php

// Header (MIME-Typ)
header('Content-type: image/png');



//daten
$daten=array();
$aa=explode(',',$datens);
for($i=0;$i<24;$i++)
{
$daten[]= $aa[$i];
}



// Image-Objekt erzeugen
$bild = imagecreate(480, 120);

// Farbwerte festlegen

$farbeWeiss = imagecolorallocate($bild, 245, 243, 227);
$farbeWhite = imagecolorallocate($bild, 247, 247, 247);
$farbeBlau = imagecolorallocate($bild, 77, 98, 119);
$farbeRot = imagecolorallocate($bild, 245, 12, 1);
$farbeGelb = imagecolorallocate($bild, 255, 204, 0);
$farbeBlau2 = imagecolorallocate($bild, 80, 102, 124);
$farbeBlau3 = imagecolorallocate($bild, 82, 105, 127);
$farbeBlau4 = imagecolorallocate($bild, 87, 111, 135);
$farbeBlau5 = imagecolorallocate($bild, 91, 116, 141);
$farbeBlau6 = imagecolorallocate($bild, 96, 123, 149);
$farbeBlau7 = imagecolorallocate($bild, 101, 128, 156);

// Liniendiagramm
for($i=0;$i<count($daten);$i++){
imagefilledrectangle($bild, $i*20, (100-($daten[$i]*5)), ($i+1)*20,100,$farbeBlau);
imagefilledrectangle($bild, ($i*20)+19, (100-($daten[$i]*5)), ($i*20)+19,100,$farbeBlau7);
imagefilledrectangle($bild, ($i*20)+18, (100-($daten[$i]*5)), ($i*20)+18,100,$farbeBlau6);
imagefilledrectangle($bild, ($i*20)+17, (100-($daten[$i]*5)), ($i*20)+17,100,$farbeBlau5);
imagefilledrectangle($bild, ($i*20)+16, (100-($daten[$i]*5)), ($i*20)+16,100,$farbeBlau4);
imagefilledrectangle($bild, ($i*20)+15, (100-($daten[$i]*5)), ($i*20)+15,100,$farbeBlau3);
imagefilledrectangle($bild, ($i*20)+14, (100-($daten[$i]*5)), ($i*20)+14,100,$farbeBlau2);
imagefilledrectangle($bild, ($i*20)+1, (100-($daten[$i]*5)), ($i*20)+1,100,$farbeBlau7);
imagefilledrectangle($bild, ($i*20)+2, (100-($daten[$i]*5)), ($i*20)+2,100,$farbeBlau6);
imagefilledrectangle($bild, ($i*20)+3, (100-($daten[$i]*5)), ($i*20)+3,100,$farbeBlau5);
imagefilledrectangle($bild, ($i*20)+4, (100-($daten[$i]*5)), ($i*20)+4,100,$farbeBlau4);
imagefilledrectangle($bild, ($i*20)+5, (100-($daten[$i]*5)), ($i*20)+5,100,$farbeBlau3);
imagefilledrectangle($bild, ($i*20)+6, (100-($daten[$i]*5)), ($i*20)+6,100,$farbeBlau2);

}




// Raster erzeugen

for($i=1;$i<24;$i++){
imageline($bild, $i*20, 0, $i*20,100,$farbeWhite);
}


// Rand fuer Grafik
imagefilledrectangle($bild, 0, 100, 480,120,$farbeGelb);
imagefilledrectangle($bild, 5, 105, 15,115,$farbeRot);
imagefilledrectangle($bild, 100, 105, 110,115,$farbeBlau);
imageline($bild,0,0,0,120,$farbeBlau);
imageline($bild,0,119,480,119,$farbeBlau);
imageline($bild,0,0,480,0,$farbeBlau);
imageline($bild,479,0,479,120,$farbeBlau);

imageline($bild,1,99,478,99,$farbeWeiss);


// Eingebaute GD-Bibliothek

ImageTTFText($bild, 10, 0, 20, 115, $farbeRot, 'fonts/sylfaenf','User online');
ImageTTFText($bild, 10, 0, 115, 115, $farbeBlau, 'fonts/sylfaenf','Uhrzeit');
for($i=0;$i<count($daten);$i++)
{
ImageTTFText($bild, 8, 0, ($i*20+2), 99-($daten[$i]*5), $farbeRot, 'fonts/sylfaenf',"$daten[$i]");
}

for($i=0;$i<24;$i++)
{
ImageTTFText($bild, 8, 0, ($i*20+2), 10, $farbeBlau, 'fonts/sylfaenf',"$i");
}

// Diagramm ausgeben und Grafik
// aus dem Speicher entfernen
imagepng($bild);
imagedestroy($bild);
?>

ACHTUNG Damit das script läuft

1. erstelle einen Ordner namens fonts
2. Suche in deinem Windows die sylfaen ttf datei
3. Kopier diese sylfaen ttf date in den Ordner fonts auf deinem Root
das sollte dann so aussehen: fonts/sylfaen ttf

Beachte, dass der fonts ordern von der php realtiv gespeichert werden muss.

4.Jetzt erstellst du eine HTML: <img src=diephp?datens=2,4,12,14,8,15 border=0>

PS Wäre nett wenn du posten würdest, falls es geklappt hat!
 
Zuletzt bearbeitet von einem Moderator:
Zurück