[php]Dynamische kleur in plaatje werkt niet :(

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • itsme
  • Registratie: Februari 2000
  • Niet online
Ik wil een plaatje met dynamische kleuren maken.
In colors.php heb ik staan wat de kleur moet worden.
In die file staat de kleur bijvoorbeeld gedefineerd als:

$kleur = "#123456";

Met een # dus.

In de image.php doe ik:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?
include("colors.php");

//Maak een PNG header 
   header("Content-type: image/png"); 
    
//Image aanmaken 
   $image = ImageCreate(5, 5);                  // 5 bij 5 pixels

$menu_color_12 = substr ($kleur, 1, 2);
$menu_color_12 = "0x".$menu_color_12;
$menu_color_34 = substr ($kleur, 3, 4);
$menu_color_34 = "0x".$menu_color_34;
$menu_color_56 = substr ($kleur, 5, 6);
$menu_color_56 = "0x".$menu_color_56;

//Kleuren
   $wit = ImageColorAllocate($image, 0xFF, 0xFF, 0xFF);     // Wit
   $color = ImageColorAllocate($image, $menu_color_12, $menu_color_34, $menu_color_56);
   $rood = ImageColorAllocate($image, 0xFF, 0x00, 0x00);    // Rood

//Geen hoek, toon kruisje
if($corner == ""){
imageline($image, 0, 0, 0, 0, $rood);
imageline($image, 4, 0, 4, 0, $rood);
imageline($image, 1, 1, 1, 1, $rood);
imageline($image, 3, 1, 3, 1, $rood);
imageline($image, 2, 2, 2, 2, $rood);
imageline($image, 1, 3, 1, 3, $rood);
imageline($image, 3, 3, 3, 3, $rood);
imageline($image, 0, 4, 0, 4, $rood);
imageline($image, 4, 4, 4, 4, $rood);
};

//linksboven
if($corner == "upleft"){
imageline($image, 0, 0, 4, 0, $color);
imageline($image, 0, 1, 2, 1, $color);
imageline($image, 0, 2, 1, 2, $color);
imageline($image, 0, 3, 0, 3, $color);
imageline($image, 0, 4, 0, 4, $color);
};

//linksonder
if($corner == "downleft"){
imageline($image, 0, 0, 0, 0, $color);
imageline($image, 0, 1, 0, 1, $color);
imageline($image, 0, 2, 1, 2, $color);
imageline($image, 0, 3, 2, 3, $color);
imageline($image, 0, 4, 4, 4, $color);
};

//rechtsboven
if($corner == "upright"){
imageline($image, 0, 0, 4, 0, $color);
imageline($image, 2, 1, 4, 1, $color);
imageline($image, 3, 2, 4, 2, $color);
imageline($image, 4, 3, 4, 3, $color);
imageline($image, 4, 4, 4, 4, $color);
};

//rechtsonder
if($corner == "downright"){
imageline($image, 4, 0, 4, 0, $color);
imageline($image, 4, 1, 4, 1, $color);
imageline($image, 3, 2, 4, 2, $color);
imageline($image, 2, 3, 4, 3, $color);
imageline($image, 0, 4, 4, 4, $color);
};

//Schrijf de ouput weg
   ImagePNG($image); 
   ImageDestroy($image); 
?>


Maar de kleur wordt zwart :'(
Waarom werkt dit niet???

[ Voor 4% gewijzigd door itsme op 23-05-2003 12:25 ]

Nothing to see here


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Ik vermoed dat ie het als een string beschouwd, de boel probeert te parsen. Een 0 ziet staan en daarna een letter en dan dus de complete string als 0 beschouwd?

Je zou het zo kunnen proberen:
$menu_color_12 = substr ($kleur, 1, 2);
$menu_color_12 = 0 + "0x".$menu_color_12;
of
$menu_color_12 = substr ($kleur, 1, 2);
$menu_color_12 = intval("0x".$menu_color_12);

Zie oa: dit in de php manual

Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 11-09 11:19

chem

Reist de wereld rond

je substr() code deugt niet; check eens goed de parameters.

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 05-09 07:32

Willem2

Ω is futile

hint:

string substr ( string string, int start [, int length])


Ik dacht trouwens dat ImageColorAllocate alleen RGB waardes accepteerde en niet hexadecimaal. Dan zou je dus ook nog ff hexdec() los moeten laten op je menu color items.

en nee, ik houd niet van voetbal... :)


Acties:
  • 0 Henk 'm!

  • Rfce
  • Registratie: Oktober 2001
  • Laatst online: 26-09-2024

Rfce

Veni, Vidi, Vici

Dat substr gedeelte moet der volgens mij toch ff anders uitzien (check php handleiding)

Zo dus

$menu_color_12 = substr ($kleur, 1, 2);
$menu_color_34 = substr ($kleur, 3, 2);
$menu_color_56 = substr ($kleur, 5, 2);

en idd bij : ImageColorAllocate mag je alleen integers opgeven:

( int imagecolorallocate ( resource image, int red, int green, int blue) )

dus ff hexdec() doen dan maar

[ Voor 29% gewijzigd door Rfce op 24-05-2003 18:09 ]

euh...ja