png image vult hele scherm, hoe plaats ik daar tekst bij

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Lex moen

lex moen

12/08/2015 12:12:10
Quote Anchor link
Ik heb een script waarmee ik een staafdiagram kan maken. Hij werkt nu, maar het plaatje vult het hele scherm, terwijl ik daar nog tekst onder wil zetten. tekst toevoegen aan het eind van het script werkt niet. tevens mag het plaatje veel kleiner zijn, nu is het plaatje van redelijk formaat, maar daaromheen is alles zwart en, veronderstel ik, deel van het image.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php

 error_reporting(E_ALL);
 ini_set('display_errors', 1);



$gegevens = array(10, 30, 40);
$kleuren = array('#FF0000', '#00FF00', '#0000FF');
$legenda = array('Type A', 'Type B', 'Type C');
$img_hoogte = 500; # Hoogte van het plaatje
$breedte = 40; # Breedte van de kolom

# Berekend de breedte van het plaatje excl. de legenda breedte

function kolom_hoogte($deel, $max, $img_hoogte, $breedte){
    return ($deel/$max)*($img_hoogte-(0.5*$breedte));
}


# Voor het 3d effect (half cosinus 30)
function schuin_x($breedte){
    return $breedte*0.43;
}


# Voor het 3d effect (half sinus 30)
function schuin_y($breedte){
    return $breedte*0.25;
}


# Zet de HTML kleur om in een rbg waarde.
function hex2rbg($color, $image){
    $string = str_replace('#','',$color);
    return    imagecolorallocate($image, hexdec(substr($string,0,2)), hexdec(substr($string,2,2)), hexdec(substr($string,4,2)));
}


# Berekend het maximum aantal tekens per array waarde en geeft de lengte van de langste terug.
function maxarraylength($input){
    foreach($input as $v){
        $output[] = strlen($v);
    }

    return max($output);
}


header("Content-Type: image/png");

# grootte van het plaatje basseren op het aantal kolomen:
$kolomen = count($gegevens);
$width = ($kolomen*$breedte*2)+(0.5*$breedte);
$image = imagecreate($width+(maxarraylength($legenda)*7)+25, ($img_hoogte+1));

# Achtergrond:
$bg = imagecolorallocate($image, 255, 255, 255);

# KOLUMS
for($i=0;$i<$kolomen;$i++){
    # vars:
    $begin = ($i*$breedte)+($i*$breedte)+(0.5*$breedte);
    $hoogte = kolom_hoogte($gegevens[$i], max($gegevens), $img_hoogte, $breedte);
    $kleur = hex2rbg($kleuren[$i], $image);
    $black = imagecolorallocate($image, 0, 0, 0);
    
    # kolom:
    imagefilledrectangle($image, $begin, ($img_hoogte-$hoogte), ($begin+$breedte), $img_hoogte, $kleur); # Vlak
    imagerectangle($image, $begin, ($img_hoogte-$hoogte), ($begin+$breedte), $img_hoogte, $black); # Omlijning
    
    # 3d effect:

    $punten = array(
        $begin,#X
        ($img_hoogte-$hoogte),#Y
      
        ($begin+schuin_x($breedte)),#X
        ($img_hoogte-$hoogte-schuin_y($breedte)),#Y
      
        ($begin+$breedte+schuin_x($breedte)),#X
        ($img_hoogte-$hoogte-schuin_y($breedte)),#Y
      
        ($begin+$breedte+schuin_x($breedte)),#X
        ($img_hoogte-schuin_y($breedte)),#Y
      
        ($begin+$breedte),#X
        $img_hoogte,#Y
      
        ($begin+$breedte),#X
        ($img_hoogte-$hoogte)#Y
    );
    imagefilledpolygon($image, $punten, 6, $kleur); # Vlak
    imagepolygon($image, $punten, 6, $black); # Omlijning
    imageline($image, $punten[10], $punten[11], $punten[4], $punten[5], $black); # Tussen lijn
    
    # Legenda:

    $top = (15*$i)+(15*$i)+(0.5*$breedte);
    $left = ($kolomen*$breedte)+($kolomen*$breedte)+(0.5*$breedte);
    imagefilledrectangle($image, $left, $top*0.5, $left+15, $top*0.5+10, $kleur); # Vlak
    imagerectangle($image, $left, $top*0.5, $left+15, $top*0.5+10, $black); # Omlijning
    imagestring($image, 3, $left+20, $top*0.5, $legenda[$i], $black); # Text
}
# // KOLUMS

imagepng($image);

imagedestroy($image);
echo"een heleboel tekst";
?>
 
PHP hulp

PHP hulp

20/04/2024 09:10:25
 
Eddy E

Eddy E

12/08/2015 12:49:21
Quote Anchor link
Dat kan niet.
Je geeft een header(PNG)... past een tekst niet in/onder.
 
Lex moen

lex moen

12/08/2015 12:58:14
Quote Anchor link
en hoe zou ik het aan kunnen passen dat het wel kan?
 
Richard Snijders

Richard Snijders

12/08/2015 13:17:07
Quote Anchor link
Ik zou eens naar de volgende functies kijken:
http://php.net/manual/en/function.imagestring.php
http://php.net/manual/en/function.imagettftext.php

De onderste is het coolst als je het mij vraagt ;)
 
Lex moen

lex moen

12/08/2015 13:36:11
Quote Anchor link
lijkt me ook.Als ik om te proberen, dit onder het stuk script zet wat ik had en dat het png plaatje maakte zie ik alleen het png plaatje, zonder de 'testing' tekst

// Set the content-type
header('Content-Type: image/png');

// Create the image
$im = imagecreatetruecolor(400, 30);

// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);

// The text to draw
$text = 'Testing...';
// Replace path by your own font path
$font = 'arial.ttf';

// Add some shadow to the text
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);

// Add the text
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im);
imagedestroy($im);
?>

Toevoeging op 12/08/2015 13:39:45:

als ik header uitzet geeft hij dit:


Warning: imagettftext(): Could not find/open font in /home/algen23/domains/algenie.eu/public_html/testorigineel.php on line 120

Warning: imagettftext(): Could not find/open font in /home/algen23/domains/algenie.eu/public_html/testorigineel.php on line 123
‰PNG  IHDR߇€IDATxœíÔA À0À¿çÃ?²¤U°×öÌ,€‚ó;à•a†daX@†a†daX@†a†daX@†a†daX@†a†daX@†a†daX@†a†daX@Ʋi9éÎNÓIEND®B`‚
 
- SanThe -

- SanThe -

12/08/2015 13:45:18
Quote Anchor link
Lijkt mij duidelijk: Could not find/open font
 
Lex moen

lex moen

12/08/2015 13:47:34
Quote Anchor link
ja, maar waarom kan hij zoiets algemeens gebruikt als arial niet vinden? Ik hoef me eigenlijk nooit drukte maken om fonts als arial times new roman enzo,dat is altijd 'vindbaar'
 
- SanThe -

- SanThe -

12/08/2015 13:52:24
Quote Anchor link
Quote:
fontfile

The path to the TrueType font you wish to use.

Depending on which version of the GD library PHP is using, when fontfile does not begin with a leading / then .ttf will be appended to the filename and the library will attempt to search for that filename along a library-defined font path.

When using versions of the GD library lower than 2.0.18, a space character, rather than a semicolon, was used as the 'path separator' for different font files. Unintentional use of this feature will result in the warning message: Warning: Could not find/open font. For these affected versions, the only solution is moving the font to a path which does not contain spaces.

In many cases where a font resides in the same directory as the script using it the following trick will alleviate any include problems.
 
Lex moen

lex moen

12/08/2015 14:30:49
Quote Anchor link
ok, ik heb nu een font geupload naar de server, raar dat dat moet, maar ok. nu zie ik echter alleen de test-tekst "testing... en niet meer de staafdiagrammen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<?php

 error_reporting(E_ALL);
 ini_set('display_errors', 1);



$gegevens = array(10, 30, 40);
$kleuren = array('#FF0000', '#00FF00', '#0000FF');
$legenda = array('Type A', 'Type B', 'Type C');
$img_hoogte = 500; # Hoogte van het plaatje
$breedte = 40; # Breedte van de kolom

# Berekend de breedte van het plaatje excl. de legenda breedte

function kolom_hoogte($deel, $max, $img_hoogte, $breedte){
    return ($deel/$max)*($img_hoogte-(0.5*$breedte));
}


# Voor het 3d effect (half cosinus 30)
function schuin_x($breedte){
    return $breedte*0.43;
}


# Voor het 3d effect (half sinus 30)
function schuin_y($breedte){
    return $breedte*0.25;
}


# Zet de HTML kleur om in een rbg waarde.
function hex2rbg($color, $image){
    $string = str_replace('#','',$color);
    return    imagecolorallocate($image, hexdec(substr($string,0,2)), hexdec(substr($string,2,2)), hexdec(substr($string,4,2)));
}


# Berekend het maximum aantal tekens per array waarde en geeft de lengte van de langste terug.
function maxarraylength($input){
    foreach($input as $v){
        $output[] = strlen($v);
    }

    return max($output);
}


header("Content-Type: image/png");

# grootte van het plaatje basseren op het aantal kolomen:
$kolomen = count($gegevens);
$width = ($kolomen*$breedte*2)+(0.5*$breedte);
$image = imagecreate($width+(maxarraylength($legenda)*7)+25, ($img_hoogte+1));

# Achtergrond:
$bg = imagecolorallocate($image, 255, 255, 255);

# KOLUMS
for($i=0;$i<$kolomen;$i++){
    # vars:
    $begin = ($i*$breedte)+($i*$breedte)+(0.5*$breedte);
    $hoogte = kolom_hoogte($gegevens[$i], max($gegevens), $img_hoogte, $breedte);
    $kleur = hex2rbg($kleuren[$i], $image);
    $black = imagecolorallocate($image, 0, 0, 0);
    
    # kolom:
    imagefilledrectangle($image, $begin, ($img_hoogte-$hoogte), ($begin+$breedte), $img_hoogte, $kleur); # Vlak
    imagerectangle($image, $begin, ($img_hoogte-$hoogte), ($begin+$breedte), $img_hoogte, $black); # Omlijning
    
    # 3d effect:

    $punten = array(
        $begin,#X
        ($img_hoogte-$hoogte),#Y
      
        ($begin+schuin_x($breedte)),#X
        ($img_hoogte-$hoogte-schuin_y($breedte)),#Y
      
        ($begin+$breedte+schuin_x($breedte)),#X
        ($img_hoogte-$hoogte-schuin_y($breedte)),#Y
      
        ($begin+$breedte+schuin_x($breedte)),#X
        ($img_hoogte-schuin_y($breedte)),#Y
      
        ($begin+$breedte),#X
        $img_hoogte,#Y
      
        ($begin+$breedte),#X
        ($img_hoogte-$hoogte)#Y
    );
    imagefilledpolygon($image, $punten, 6, $kleur); # Vlak
    imagepolygon($image, $punten, 6, $black); # Omlijning
    imageline($image, $punten[10], $punten[11], $punten[4], $punten[5], $black); # Tussen lijn
    
    # Legenda:

    $top = (15*$i)+(15*$i)+(0.5*$breedte);
    $left = ($kolomen*$breedte)+($kolomen*$breedte)+(0.5*$breedte);
    imagefilledrectangle($image, $left, $top*0.5, $left+15, $top*0.5+10, $kleur); # Vlak
    imagerectangle($image, $left, $top*0.5, $left+15, $top*0.5+10, $black); # Omlijning
    imagestring($image, 3, $left+20, $top*0.5, $legenda[$i], $black); # Text
}
# // KOLUMS

//imagepng($image);

//imagedestroy($image);

// Set the content-type

header('Content-Type: image/png');

// Create the image
$im = imagecreatetruecolor(400, 30);

// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);

// The text to draw
$text = 'Testing...';
// Replace path by your own font path
$font = 'AliquamREG.ttf';

// Add some shadow to the text
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);

// Add the text
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im);
imagedestroy($im);
?>
 
Eddy E

Eddy E

12/08/2015 23:42:44
Quote Anchor link
2x header()?
2x $im = $imagecreatetruecolor()?

Kijk, daar zit je fout...
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.