000
29.10.2004, 12:39
Death-Angel
|
Also ich habe folgendes Problem: Ich möchte mit GD ein Map-Overview generieren anhand eines 40*20 großen Feldes, dass ich in einem Array gespeichert habe. Jedes Feld kann entweder ein Haus (Rot), eine Straße (Grau), ein Fluss (Blau) oder eine Wiese (Grün) sein. Das Problem ist nun, dass GD nach ca. 240 Feldern (Jedes Feld entspricht einem 5*5 px großem Quadrat) mit den Farben schlapp macht... er zeichnet zwar noch die Felder, aber er ändert nicht die Farbe, wenn z.B. ein Haus kommt. Er zeichnet nur noch stur mit der gleichen Farbe alle Felder restlichen Felder (in diesem Fall grün).
Hier ein Bild, wie es normal aussehen sollte. Hier klicken
Aber so sieht es in Wirklichkeit aus Hier klicken (Von den dunkelgrünen Feldern ist abzusehen)
Für diejenigen die den Code sehen wollen
<?php header ("Content-type: image/png");
<..>
$im = @ImageCreate (505, 505) or die ("Kann keinen neuen GD-Bild-Stream erzeugen");
$background_color = fromhex($oco[5],$im);
<...>Nach ein paar Arbeitsschritten<..>
$xmin = -20; $xmax = 20; $ymin = -10; $ymax = 10;
for($yc = $ymax; $yc >= $ymin; $yc--){
for($xc = $xmin; $xc <= $xmax; $xc++){
if($field[$xc][$yc]){ $f = $field[$xc][$yc]; $bgcolor = $oco[$f[objecttype_typ]];
$axpos = $xc*5; $expos = ($xc*5)+5; $aypos = ($yc*5)*-1; $eypos = (($yc*5)-5)*-1; sscanf($bgcolor, "%2x%2x%2x", $red, $green, $blue); $blockcolor = ImageColorAllocate($im,$red,$green,$blue); ImageFilledRectangle($im,255+$axpos,255+$aypos,255+$expos,255+$eypos,$blockcolor); } } }
ImagePNG ($im); ?>
--
Mein Japan Tagebuch | Japan Gallerie
|
|
Profil || Suche
|
001
29.10.2004, 14:12
Onkel Dittmeyer
|
Es dürfte nach genau 256 Feldern auftreten, da ein Color Index in der GD-Lib maximal 1 byte groß sein kann und du bei jedem einzelnen Feld eine neue Farbe alloziierst. Um die Sache teilweise zu lösen:
$color_index = imagecolorexact($image, $r, $g, $b);
if ($color_index < 0) $color_index = imagecolorallocate($image, $r, $g, $b);
Und dann einfach mit $color_index weiterarbeiten. Dann ist zwar nach 256 verschiedenen Farben auch schluss, aber immerhin...
--
Dieser Beitrag wurde am 29.10.2004 um 14:15 von Onkel Dittmeyer bearbeitet.
|
|
Profil || Suche
|
002
29.10.2004, 15:14
Death-Angel
|
Danke, hab aber schon eine andere Lösung gefunden :)
Mit $im = @ImageCreateTrueColor(505, 505); ging es auch ^^
€: Deine Lösung ist doch besser, den dann brauche ich kein TrueColor und das PNG wird kleiner ^^
--
Mein Japan Tagebuch | Japan Gallerie
Dieser Beitrag wurde am 29.10.2004 um 18:40 von Death-Angel bearbeitet.
|
|
Profil || Suche
|