Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
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-Quellcode:<?php
header 
("Content-type: image/png");

    <..>

    
$im = @ImageCreate (505505) 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

zum Seitenanfang zum Seitenende 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:
Quellcode:$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.
zum Seitenanfang zum Seitenende 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.
zum Seitenanfang zum Seitenende Profil || Suche