[PHP / GD] Dynamische ImageColorAllocate in loop werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Cavorka
  • Registratie: April 2003
  • Laatst online: 27-03-2018

Cavorka

Internet Entrepreneur

Topicstarter
Ik zit met het volgende probleem:

een tijdje geleden postte ik hier over een caustics simulatie die ik had geschreven in PHP, deze gaf ik toen weer (het resultaat dus) met tabellen. Super lomp, maar het werkte.
Nu wil ik het echter met de GD Library oplossen omdat ik er een animatie mee wil maken (jaja, I know, I am pushing the PHP envelope here...), waarbij mijn puntbron dus gaat bewegen, images worden in volgorde gesaved en dan hoef ik ze dus alleen maar aan elkaar te plakken (bijv. met de IFL manager van 3D Max).

Aaaaanyways, hier het probleem:
ik wil het hele plaatje dus pixel voor pixel gaan opbouwen, en elke pixel een bepaalde kleur geven, maar om een of andere reden wil deze dat niet doen, het lijkt erop alsof alleen de laatste kleur gepakt wordt en dus alle pixels dezelfde kleur worden.

De code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
(...)
for($y_grid = 0 ; $y_grid < $temp_gp ; $y_grid++) {
    for($x_grid = -$temp_gp ; $x_grid < $temp_gp ; $x_grid++) {

        $grey_index = round(($intensity[$x_grid][$y_grid] * $norm), 0) ;
        $color = ImageColorAllocate($im, $grey_index, $grey_index, $grey_index) ;
        ImageSetPixel($im, $x_grid, $y_grid, $color) ;

    } // X
} // Y
(...)


Lijkt me wel duidelijk wat hier gebeurt: hij dubbel loopt en pakt de (eerder berekende) intensiteit, normaliseert deze en dan allocate ik dus de kleur naar grayscale.

In deze tutorial worden ook kleuren geallocate met variabelen, dus het kan zeker... het probleem is dus dat hij om onduidelijke redenen alleen de laatste kleur kiest en daar ALLE pixels mee vult waar ik overheen loop.

Iemand hier iets over bekend?

Ik gebruik PHP 4.3.2, met ingebakken GD dus.

PS: Ondertussen ga ik nog maar ff verder met testen, want ik weet toch wel bijna zeker dat het moet kunnen. Of misschien is het een bug? :? Let's hope not...

*Edit: Het lijkt me toch niet dat ik eerst alle 256 grijswaarden moet gaan allocaten? Ik zal het voor de zekerheid toch maar wel even testen.

[ Voor 8% gewijzigd door Cavorka op 15-09-2003 16:24 ]

the-blueprints.com - The largest free blueprint collection on the internet: 50000+ drawings.


Acties:
  • 0 Henk 'm!

  • Cavorka
  • Registratie: April 2003
  • Laatst online: 27-03-2018

Cavorka

Internet Entrepreneur

Topicstarter
Godver, de gloeiende. :p

Dus toch wat ik dacht. Mijn excuses.

Oplossing:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
(...)
for($i = 0 ; $i <= 255 ; $i++) { $color[$i] = ImageColorAllocate($im, $i, $i, $i) ; }

for($y_grid = 0 ; $y_grid < $temp_gp ; $y_grid++) {
    for($x_grid = -$temp_gp ; $x_grid < $temp_gp ; $x_grid++) {

        $grey_index = round(($intensity[$x_grid][$y_grid] * $norm), 0) ;
        ImageSetPixel($im, $x_grid, $y_grid, $color[$grey_index]) ;

    } // X
} // Y
(...)


Dus eerst alle 256 grijstinten allocaten.

Mag op slot. 8)

*Edit: als de animatie af is, zal ik hem wel ff posten.

[ Voor 14% gewijzigd door Cavorka op 15-09-2003 16:32 ]

the-blueprints.com - The largest free blueprint collection on the internet: 50000+ drawings.