gd functies
wat zijn gd functies precies? en hoe werkt het?
PHP.net does know the answer... Vraag het hem...
De eenvoudige dingen die hiermee gedaan worden zijn:
- Maken van thumbnails
- Roteren van plaatjes
- Samen voegen van plaatjes
- Tekst invoegen in plaatjes
- Omzetten van plaatjes
- Maken van captcha's
Maar er zijn nog veel meer dingen, je kan ook rustig 3D gaan renderen als je bijvoorbeeld grafieken wilt maken.
En hoe het allemaal werkt, tja daar kun je beter de link van Gamer13 volgen, want op de website van php.net staat een legio aan omschrijvingen en voorbeelden die je uit kunt proberen.
Mocht je een bepaalde doelstelling hebben, dan zou je die kunnen uitleggen en wellicht kunnen we je dan de juiste richting op helpen.
(edit: een random afbeelding die overeen moet komen met het invoer vlak)
Code (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
75
76
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
<?php
//hier start de session
session_start();
//hier zegen we tegen de browser dat het om een afbeelding
header("Content-type: image/jpeg");
//deze functie begin je de afbeelding
$img = @imagecreate(100,20);
// Met deze functie stel je een kleur waarden in 255 is geen van alle kleuren en 0 is alle kleuren bij elkaar
// door voor de grafische mensen onder ons is 255 de nul waarden
$bg = imagecolorallocate($img, 255, 255, 255);
$txt = imagecolorallocate($img, 0, 0, 0);
// hier beginnen we met een random getal te genereren
// ik denk dat srand en rand wel bekend zijn bij de meeste mensen
// maar voor mensen die het niet weten leg ik het toch effe uit
// met srand stel je een seed in voor de rand
// ik gebruik hier time maar je kan ook gewoon alles gebruiken
$seed = time();
$seed = srand($seed);
//met md5 kan je heel een heel mooie code met cijfers en letters genereren
$rand = md5(rand());
//zoals je nu ziet gebruik ik nu date dat is om een andere seed te genereren
$seed2 = date("zs");
$seed2 = srand($seed2);
$start = rand(0,22);
// zoals je mischien al ziet gebruik ik deze random van een willekeurige plek uit de
// 32 karakters lange code een code te plukken van maar 10 karakters lang
$code = substr($rand,$start,10);
// ik sla het op in een sessie zodat je het in een andere script kan vergelijken
// met de echte code en de input van de gebruiker bijv in een if statement
$_SESSION['code'] = $code;
//en hiermee plak je de code op het plaatje
imagestring($img, 10, 5, 2, $_SESSION['code'], $txt);
// hier begint het anti bot truukje
// de nieuwere bots die worden gebruikt bij brute force aanvallen
// die kunnen tekens herken die ze scannen van het plaatje af
// daarom gaan wij het plaatje omdraaien zodat ze niet meer horizontaal te lezen zijn
//random hoef ik niet te vertellen
$angle_choice = date("sz");
$angle_choice = srand($angle_choice);
$angle_choice = rand(1,2);
//dit is eigenlijk een verkorte versie van een if statement ik conroleer de output van
// de random hierboven hier gebeurt ook de selectie of hij cw of ccw draait
$angle_choice = ($angle_choice == 1)?"angle_neg" : "angle_pos";
//als het deze word draait hij cw
$angle_neg = rand(-7,-2);
//alls het deze word draait hij ccw
$angle_pos = rand(7,2);
//deze functie draait de bron afbeelding om in de hoek die opgegeven is en plakt die
// in een nieuwe afbeelding
$rotate = imagerotate($img,$$angle_choice,$bg);
//nu maken we van onze code een output
imagejpeg($rotate);
//en nu vernietigen we het plaatje
imagedestroy($rotate);
imagedestroy($img);
?>
//hier start de session
session_start();
//hier zegen we tegen de browser dat het om een afbeelding
header("Content-type: image/jpeg");
//deze functie begin je de afbeelding
$img = @imagecreate(100,20);
// Met deze functie stel je een kleur waarden in 255 is geen van alle kleuren en 0 is alle kleuren bij elkaar
// door voor de grafische mensen onder ons is 255 de nul waarden
$bg = imagecolorallocate($img, 255, 255, 255);
$txt = imagecolorallocate($img, 0, 0, 0);
// hier beginnen we met een random getal te genereren
// ik denk dat srand en rand wel bekend zijn bij de meeste mensen
// maar voor mensen die het niet weten leg ik het toch effe uit
// met srand stel je een seed in voor de rand
// ik gebruik hier time maar je kan ook gewoon alles gebruiken
$seed = time();
$seed = srand($seed);
//met md5 kan je heel een heel mooie code met cijfers en letters genereren
$rand = md5(rand());
//zoals je nu ziet gebruik ik nu date dat is om een andere seed te genereren
$seed2 = date("zs");
$seed2 = srand($seed2);
$start = rand(0,22);
// zoals je mischien al ziet gebruik ik deze random van een willekeurige plek uit de
// 32 karakters lange code een code te plukken van maar 10 karakters lang
$code = substr($rand,$start,10);
// ik sla het op in een sessie zodat je het in een andere script kan vergelijken
// met de echte code en de input van de gebruiker bijv in een if statement
$_SESSION['code'] = $code;
//en hiermee plak je de code op het plaatje
imagestring($img, 10, 5, 2, $_SESSION['code'], $txt);
// hier begint het anti bot truukje
// de nieuwere bots die worden gebruikt bij brute force aanvallen
// die kunnen tekens herken die ze scannen van het plaatje af
// daarom gaan wij het plaatje omdraaien zodat ze niet meer horizontaal te lezen zijn
//random hoef ik niet te vertellen
$angle_choice = date("sz");
$angle_choice = srand($angle_choice);
$angle_choice = rand(1,2);
//dit is eigenlijk een verkorte versie van een if statement ik conroleer de output van
// de random hierboven hier gebeurt ook de selectie of hij cw of ccw draait
$angle_choice = ($angle_choice == 1)?"angle_neg" : "angle_pos";
//als het deze word draait hij cw
$angle_neg = rand(-7,-2);
//alls het deze word draait hij ccw
$angle_pos = rand(7,2);
//deze functie draait de bron afbeelding om in de hoek die opgegeven is en plakt die
// in een nieuwe afbeelding
$rotate = imagerotate($img,$$angle_choice,$bg);
//nu maken we van onze code een output
imagejpeg($rotate);
//en nu vernietigen we het plaatje
imagedestroy($rotate);
imagedestroy($img);
?>
maar de variable waar mee ik het moet vergelijken komt niet goed door.
er stond bij dit script dat ik de gd functies moest gebruiken. maar als ik niet weet hoe dat werkt kom ik niet ver...
Gewijzigd op 01/01/1970 01:00:00 door Hans Q