[script review] CLASS: Watermerk (Zoals 1001 anderen)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Full Stack C#.NET developer

Functieomschrijving Wij zijn op zoek naar een gepassioneerde Full Stack C#.NET Software Developer. Als Software Developer ben je verantwoordelijk voor het ontwikkelen van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Je werkt samen met andere ontwikkelaars en engineers om de sensoren in machines uit te lezen en deze data om te zetten in management informatie voor jullie klanten. Taken en verantwoordelijkheden: Ontwikkelen en onderhouden van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Testen en valideren van de ontwikkelde software. Actief deelnemen aan code reviews en bijdragen aan het verbeteren van de kwaliteit van de software. Je gaat aan

Bekijk vacature »

Ervaren Full stack developer

Functie omschrijving Ben jij op zoek naar een uitdagende in-house functie bij een bedrijf met enorme groeipotentie? Ben jij op zoek naar een nieuwe uitdaging vol afwisseling en gezelligheid? Dan ben je bij dit bedrijf aan het juiste adres! Wij zijn in omgeving Breda op zoek naar een ervaren full stack developer. Je gaat werken voor een zeer gewilde werkgever met goede arbeidsvoorwaarden. Je krijgt een plekje in het jonge IT team, work hard, play hard is hier duidelijk het motto! Jouw werkzaamheden zien er als volgt uit: Jij bent verantwoordelijk voor het ontwerpen en bouwen van webapplicaties. Je bent

Bekijk vacature »

Dynamics Ontwikkelaar

Dit ga je doen Ontwikkelen van Dynamics 365 voor de interne uitrol; Samen met de consultants sparren met klanten over de wensen en eisen; Ontwikkelen van Dynamics 365 voor verschillende grote klanten; Technische analyse en testen; Meedenken over het gebruik en de richting van Dynamics binnen de organisatie. Hier ga je werken Onze opdrachtgever, gevestigd in regio Eindhoven, levert een compleet dienstenpakket op het gebied van IT. Zij pakken verschillende (complexe) vraagstukken van grote organisaties op. De sfeer intern is gezellig en informeel. Men houdt van hard werken maar gezelligheid door middel van een borrel of gezamenlijke lunch komt er

Bekijk vacature »

.NET Developer Microservices

Dit ga je doen Je taken zullen voornamelijk bestaan uit: Het ontwikkelen van software, inclusief vormgeving, implementaties, integraties en (automatisch) testen (.NET, C#, Azure, Docker, Microservices, Angular); Het in kaart brengen van software requirements; Zorgen dat jouw code kwalitatief hoogstaand is; Het uitvoeren van risico analyses; Een bijdrage leveren aan het continuous quality improvement process. Hier ga je werken Dat kanker een verschrikkelijke ziekte is die de wereld uit geholpen moet worden, is duidelijk. Binnen deze Gelderse organisatie die duizenden ziekenhuizen van producten voorziet, proberen ze daar via technische innovaties aan bij te dragen. Samen met 10 collega .NET developers

Bekijk vacature »

WordPress & Azure Developer

Dit ga je doen Zowel front- als back-end development aan de online website omgeving; Het up-to-date houden van alle WordPress-sites; Koppelingen maken tussen applicaties; Meedenken en adviseren over verbeteringen; Development door middel van WordPress, Javascript, HTML en CSS; Werken binnen Scrum/Agile team. Hier ga je werken Voor een grote overheidsinstelling in Den Haag zijn wij opzoek naar een WordPress developer, met kennis en ervaring op het gebied van Azure. De organisatie zit in een grote transitie waarbij de gehele website/online omgeving vernieuwd zal gaan worden. Binnen dit Scrum/Agile team ben je verantwoordelijk voor deze grote migratie/ombouw van de omgeving. De

Bekijk vacature »

Front end developer Zorgplatform

Functie Jij als Front end ontwikkelen zult komen te werken samen met 1 PHP ontwikkelaar, 1 Python developer en een flexibele schil aan ontwikkelaars . Samen ga je ervoor zorgen dat de huidige producten doorontwikkeld worden. De Marketplace is geschreven in PHP Laravel en in de front end React. De roostersoftware is ontwikkeld in Python in combinatie met React in de front end. Jij zult als Front ender dus voornamelijk bezig zijn met het verbeteren van onze interfaces op onze verschillende producten. Momenteel ligt de uitdaging in het feit dat de roostersoftware breder schaalbaar moet worden zodat het voor meerdere

Bekijk vacature »

Low-code developer

Functie omschrijving Heb jij altijd al een training willen volgen in het buitenland? Voor een leuke opdrachtgever in omgeving Alphen ad Rijn zijn wij op zoek naar kandidaten die aan de slag willen als Low Code Developer! Beschik jij over HBO/WO nivo, bij voorkeur Informatica, maar een ander technische opleiding zoals bijv. wiskunde, natuurkunde is ook goed. Heb jij aantoonbare affiniteit met IT en ben jij gedreven, enthousiast, communicatief vaardig en klantgericht? Lees dan snel verder! Je wordt getraind tot een volwaardig Low Code Developer, het traject ziet er als volgt uit: Start 1e week januari, opleiding van 3 weken

Bekijk vacature »

Back-End Web Developer

As a Back-End Web Developer at Coolblue, you ensure that our webshops work as optimal as possible. How do I become a Back-End Web Developer at Coolblue? As a Back-End Web Developer you work together with other development teams to make our webshop work as optimal as possible and to make our customers happy. Although you are a PHP Developer, you also feel confident with setting up microservices in Typescript or are open to learning this. Would you also like to become a PHP Developer at Coolblue? Read below if the job suits you. You enjoy doing this Writing pure

Bekijk vacature »

Front-end (Angular) developer - remote werken

Functie Als Front-end (Angular) developer ga je aan de slag met het uitbouwen van hun webapplicatie, als één van de front-end experts ga je samen met collega’s in een devops team werken aan een nieuw front-end voor hun calculatie oplossing. Binnen de calculatiesoftware kunnen meerdere professionals tegelijk samenwerken, 3D calculaties uitvoeren en ook inzien met de benodigde specifieke details. Deze software wordt veel ingezet om projectbeschrijvingen en kosten in kaart te brengen, en tijdens de uitvoering te bewaken. Maar hiernaast liggen er in de toekomst veel meer plannen op het gebied van front-end in de andere applicaties. Genoeg te doen

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Heb jij altijd al willen werken voor een bedrijf, dat veilige netwerkverbindingen levert, door middel van veilige oplossingen, die door middel van de nieuwste technologieën ontwikkelt zijn? Stop dan nu met zoeken! Voor een opdrachtgever in omgeving Moordrecht zijn wij op zoek naar een programmeur. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen C / C++ / PHP. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten goed verlopen. Je gaat klanten ondersteunen op

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET developer begint jouw dag na een bak koffie met een stand up. De vorderingen worden tijdens de stand up besproken en de doelen worden opgesteld waar jullie als team in de volgende sprint naartoe gaan werken. Onze backend is geschreven in .NET Core en onze Front-end in Angular. Bij ons ga jij dan ook Fullstack aan de slag. Jij wordt hier opgeleid om zelfstandig te kunnen programmeren en applicaties te kunnen implementeren. Er wordt op projectbasis gewerkt, dit bied leuke uitdagingen omdat elke klant een andere visie heeft over de applicatie die wij maken. Je gaat

Bekijk vacature »

Developer

Functie omschrijving Gaat jouw hart sneller kloppen van software developen in C#.NET? Voor een softwarebedrijf in regio Den Bosch zijn wij op zoek naar een C# programmeur. Lees snel verder! Wat ga je doen? Je gaat werken met C# en ASP.NET MVC Framework om onder meer webapplicaties, webshops en websites te ontwikkelen. Je optimaliseert de bestaande software en helpt mee aan het automatiseren van bedrijfsprocessen. Je gaat samen met je collega's de juiste oplossing op basis van de wensen van de klanten uitwerken tot een mooi product. Bedrijfsprofiel Het ontwikkelen van softwareoplossingen en kantoorautomatiseringen is waar dit bedrijf voor staat.

Bekijk vacature »

SQL Database developer

Functie omschrijving Wil jij meewerken aan het creëren van slimme software om magazijnen als een geoliede machine te laten lopen? Wij zoeken een zorgvuldig persoon, iemand die niet snel de hand omdraait voor complexe algoritmes. Denk jij dat jij de SQL ontwikkelaar bent die wij zoeken? Lees snel verder en wie weet zitten we binnenkort samen aan tafel! Jouw werkzaamheden zullen er als volgt uitzien: Je houdt je bezig met het ontwerpen en ontwikkelen van MS SQL server databases, dit doe je met T-SQL als programmeer laag. Je gaat aan high-end software oplossingen werken, dit doe je voor de optimalisatie

Bekijk vacature »

Mendix Developer

Voor Troostwijk Groep zoeken wij een: Mendix Developer Wij zoeken Je bent een getalenteerde en ervaren Mendix Developer en het is tijd om je horizon te verbreden. Je wilt minder coderen en meer modelleren, minder bezig zijn met allerlei technische details en randvoorwaarden en meer met functionaliteit. Daarnaast ben je trots op de innovatieve en gebruiksvriendelijke applicaties die je in de loop van de jaren hebt gebouwd. Werk je graag in een enthousiast team, wil je veel vrijheid en kun je tegelijkertijd goed met deadlines omgaan, dan ben jij absoluut degene die wij zoeken! Wat je nodig hebt is ruime

Bekijk vacature »

Lead Java Developer

Dit ga je doen Je taken bestaan onder andere uit: Het aansturen van een development team bestaande uit 8 collega's op technisch maar ook HR gebied; Het maken van strategische keuzes omtrent de (nieuw)bouw van deze applicatie; Het maken van technische ontwerpen; Hands-on mee ontwikkelen met het team (met o.a. Java, Spring, Angular, REST); Reviewen van code en feedback geven op collega developers. Hier ga je werken Als Lead Software Developer ben je verantwoordelijk voor één van de vier Agile Java ontwikkelteams die bouwen aan technologie die duizenden instanties wereldwijd verbindt. Dit Agile team, data Jira en Confluence gebruikt en

Bekijk vacature »

Pagina: 1 2 volgende »

G P

G P

09/01/2012 19:28:09
Quote Anchor link
Mijn eerste Class... Geef jullie gedacht hierover
[File: image.inc.php][UPDATE]
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
<?php

    /***********************************************************
    * Een Class om een watermerk op een afbeelding te plaatsen *
    ***********************************************************/

    
class img {
    // Construct => Benodigheden om de class te starten
    function __construct($pathtoimage = NULL, $pathtowatermark = NULL, $watermarkalign = 'left', $watermarkvalign = 'top', $watermarktransparent = '100'){

        // Afbeelding
        img::image($pathtoimage);

        // Watermerk
        img::watermark($pathtowatermark);

        // Positie van het watermerk
        img::align($watermarkalign);
        img::valign($watermarkvalign);

        // Doorzichtigheid van het watermerk
        img::transparent($watermarktransparent);

    }


    // Controleer de afbeelding
    function image($pathtoimage = NULL){
        $this->pathtoimage = $pathtoimage;
        img::checkErrors();
    }


    // Controleer het watermerk
    function watermark($pathtowatermark = NULL){
        $this->pathtowatermark = $pathtowatermark;
        img::checkErrors();
    }


    // Posititie van het watermerk (Links => Midden => Rechts => Getal [Links -> Rechts])
    function align($watermarkalign = 'left'){
        $this->align = $watermarkalign;
        img::checkErrors();
    }


    // Posititie van het watermerk (Boven => Midden => Onder => Getal [Boven -> Onder])
    function valign($watermarkvalign = 'top'){
        $this->valign = $watermarkvalign;
        img::checkErrors();
    }


    // Doorzichtigheid van het watermerk
    function transparent($watermarktransparent = '100'){
        $this->transparent = $watermarktransparent;
        img::checkErrors();
    }


    // Controleer op fouten
    private function checkErrors(){
        // Standaard waarden
        $this->error['total_errors'] = '0';
        $this->error['image'] = NULL;
        $this->error['watermark'] = NULL;
        $this->pathtoimage = isset($this->pathtoimage) ? $this->pathtoimage : NULL;
        $this->pathtowatermark = isset($this->pathtowatermark) ? $this->pathtowatermark : NULL;
        $this->valign = isset($this->valign) ? $this->valign : 'top';
        $this->align = isset($this->align) ? $this->align : 'left';
        $this->transparent = isset($this->transparent) ? $this->transparent : '100';

        // Controleer op afbeelding
        if ($this->pathtoimage == NULL){
            $this->error['total_errors'] ++;
            $this->error['image'] = 'No Image!';
        }
else
        // Controleer op bestaande afbeelding
        if (!file_exists($this->pathtoimage)){
            $this->error['total_errors'] ++;
            $this->error['image'] = 'Image Not Found!';
        }
else
        // Controleer of het wel een afbeelding is
        if (!$this->picture = getimagesize($this->pathtoimage)){
            $this->error['total_errors'] ++;
            $this->error['image'] = 'Not An Image!';
        }


        // Controleer op watermerk
        if ($this->pathtowatermark == NULL){
            $this->error['total_errors'] ++;
            $this->error['watermark'] = 'No Watermark!';
        }
else
        // Controleer op bestaande watermerk
        if (!file_exists($this->pathtowatermark)){
            $this->error['total_errors'] ++;
            $this->error['watermark'] = 'Watermark Not Found!';
        }
else
        // Controleer het watermerk is een afbeelding
        if (!$this->watermark = getimagesize($this->pathtowatermark)){
            $this->error['total_errors'] ++;
            $this->error['watermark'] = 'Not A Watermark!';
        }


        // Controleer Transparant
        if ($this->error['total_errors'] == '0'){
            if (!is_numeric($this->transparent)){
                $this->error['total_errors'] ++;
                $this->error['watermark'] = 'Not A Valid Number For transparent! (USE a number BETWEEN 0 - 100)';
            }
else
            if ($this->transparent > '100' || $this->transparent < '0'){
                $this->error['total_errors'] ++;
                $this->error['watermark'] = 'Not A Valid Number For transparent! (USE a number BETWEEN 0 - 100)';
            }
else {
                if ($this->transparent > '0' && $this->transparent <= '100'){
                    $this->transparent = 100 - round($this->transparent);
                }
else {
                    $this->transparent = '100';
                }
            }

        }


        if ($this->error['total_errors'] == '0'){
            // Controleer positie Links => Rechts
            switch($this->align){
                case
'left':
                    $this->align = '0';
                    break;
                case
'center':
                    $this->align = round($this->picture['0'] / 2) - round($this->watermark['0'] / 2);
                    break;
                case
'right':
                    $this->align = round($this->picture['0']) - round($this->watermark['0']);
                    break;
                case
is_numeric($this->align):
                    $this->align = round($this->align);
                    break;
                default:

                    $this->error['total_errors'] ++;
                    $this->error['watermark'] = 'Not A Valid Input For align! (USE `left`, `right`, `center` OR a number)';
            }


            // Controleer positie Boven => Onder
            switch($this->valign){
                case
'top':
                    $this->valign = '0';
                    break;
                case
'center':
                    $this->valign = round($this->picture['1'] / 2) - round($this->watermark['1'] / 2);
                    break;
                case
'bottom':
                    $this->valign = round($this->picture['1']) - round($this->watermark['1']);
                    break;
                case
is_numeric($this->valign):
                    $this->valign = round($this->valign);
                    break;
                default:

                    $this->error['total_errors'] ++;
                    $this->error['watermark'] = 'Not A Valid Input For valign! (USE `top`, `bottom`, `center` OR a number)';
            }
        }
    }


    // Afbeelding maken
    private function createImg($image = NULL, $mime = NULL){
        switch($mime){
            case
'image/gif':
                return imagecreatefromgif($image);
                break;
            case
'image/jpg':
                return imagecreatefromjpeg($image);
                break;
            case
'image/jpeg':
                return imagecreatefromjpeg($image);
                break;
            case
'image/png':
                return imagecreatefrompng($image);
                break;
            default:

                return imagecreatefromjpeg($image);
                break;
        }
    }


    // Afbeelding maken
    private function setImage(){
        $this->imgPicture = img::createImg($this->pathtoimage, $this->picture['mime']);
        img::checkErrors();
    }


    // Watermerk maken
    private function setWatermark(){
        $this->imgWatermark = img::createImg($this->pathtowatermark, $this->watermark['mime']);
        img::checkErrors();
    }


    // Toon de afbeelding
    function show(){
        if ($this->error['total_errors'] == '0'){
            img::setImage();
            img::setWatermark();
            imagecopymerge($this->imgPicture, $this->imgWatermark, $this->align, $this->valign, 0, 0, $this->watermark['0'], $this->watermark['1'], $this->transparent);
            switch($this->picture['mime']){
                case
'image/gif':
                    header('Content-type: image/gif');
                    imagegif($this->imgPicture);
                    break;
                case
'image/png':
                    header('Content-type: image/png');
                    imagepng($this->imgPicture);
                    break;
                default:

                    header('Content-type: image/jpeg');
                    imagejpeg($this->imgPicture);
                    break;
            }

            imagedestroy($this->imgPicture);
            imagedestroy($this->imgWatermark);
        }
else {
            print '<h1>There Are Some Errors Found!</h1>';
            print '<pre>';
            print_r($this->error);
            print '</pre>';
        }

    }

}


?>
[File: show.php]
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
<?php

// Start een sessie
session_start();

// Ophalen van Class
require_once('image.inc.php');

// OPTIE 1
$img = new img('image.jpg', 'watermark.gif', 'center', 'center', '50');

if ($img->error['total'] != '0'){
    print '<pre>';
    print_r($img);
    print '</pre>';
}
else {
    $img->show();
}


// OPTIE 2
$img = new img();
$img->image('image.jpg'); // URL naar de afbeelding
$img->watermark('watermark.gif'); // URL naar het watermerk
$img->align('center'); // Positie van het watermerk (Left, Center, Right of een getal...
$img->valign('center'); // Positie van het watermerk (Top, Center, Bottom of een getal...
$img->transparent('50'); // Doorzichtigheid van het watermerk (0 -> 100);

if ($img->error['total'] != '0'){
    print '<pre>';
    print_r($img);
    print '</pre>';
}
else {
    $img->show();
}


?>


Titel aangepast, zo is het wat duidelijker.[/modedit]
Gewijzigd op 10/01/2012 19:39:24 door G P
 
PHP hulp

PHP hulp

05/05/2024 22:48:58
 
Kris Peeters

Kris Peeters

10/01/2012 15:42:17
Quote Anchor link
Het ziet er wel proper uit.

Straks eens uitproberen.

Ik zie wel nog een mogelijkheid om iets toe te voegen.

Wanneer je zo'n soort dingen doet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$img
= new img();
$img->image('image.jpg'); // URL naar de afbeelding
$img->watermark('watermark.gif'); // URL naar het watermerk
$img->align('center'); // Positie van het watermerk (Left, Center, Right of een getal...
...
?>


Het is ook mogelijk dat je het zo doet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$img
= new img();
$img->image('image.jpg') // URL naar de afbeelding
    ->watermark('watermark.gif') // URL naar het watermerk
    ->align('center'); // Positie van het watermerk (Left, Center, Right of een getal...
...
?>


Wat moet je dan doen? Simpelweg al die functies waarbij je gegevens in het object pompt, die eindig je allemaal met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
  return $this;
}

?>
 
Pim -

Pim -

10/01/2012 15:46:09
Quote Anchor link
Probeer eens met exceptions te werken.
 
G P

G P

10/01/2012 19:46:24
Quote Anchor link
Script is geupdated, volgende kan je gebruiken.
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
<?php

// Start een sessie
session_start();

// Ophalen van Class
require_once('function.inc.php');

// OPTIE 1
$img = new img('image.jpg', 'watermark.gif', 'center', 'center', '50');
$img->show();

// OPTIE 2
$img = new img();
$img->image('lightbulb.jpg'); // URL naar de afbeelding
$img->watermark('watermark.gif'); // URL naar het watermerk
$img->align('right'); // Positie van het watermerk (Left, Center, Right of een getal...
$img->valign('bottom'); // Positie van het watermerk (Top, Center, Bottom of een getal...
$img->transparent('75'); // Doorzichtigheid van het watermerk (0 -> 100);
$img->show();

?>
Natuurlijk werkt de eerste optie (zoals hierboven beschreven) ook nog altijd.

Update Info:
1) Foutmelding tonen als er fouten zijn toon anders de afbeelding
2) Transparent rekent nu in %, 100 = is onzichtbaar, 0 = volledig zichtbaar.
3) Klein foutje bij error[total_errors] is weg gewerkt

Toevoeging op 10/01/2012 19:48:21:

@Kris: Geen return
@Pim: Dat zal de volgende stap zijn... ben aan het leren in kleine stapjes...
 
- Jim  -

- Jim -

10/01/2012 21:06:09
Quote Anchor link
@Pim: Exceptions??? Daar heeft PHP toch DIE() voor??? :p

$img->image(...), het is misschien handig om er setImage() van te maken.
Dat zegt n.l. meer dan alleen image.

"getter & setters, query & command, that kind of things...."
 
G P

G P

11/01/2012 01:37:50
Quote Anchor link
@Jim: Inderdaad, setImage en setWatermark zal duidelijker zijn, handige tip! :)
 
Niels K

Niels K

11/01/2012 11:12:25
Quote Anchor link
Een watermerk een een afbeelding zijn toch twee verschillende zaken? Afgezien van het feit dat ze wel met elkaar te maken hebben.

Daarnaast, ik mis method visibility ?
Gewijzigd op 11/01/2012 11:26:23 door Niels K
 
Kris Peeters

Kris Peeters

11/01/2012 11:26:43
Quote Anchor link
De private methodes staan wel als private.
Alleen lijkt het er op dat enkel public niet expliciet vermeld wordt, wegens toch default
 
Niels K

Niels K

11/01/2012 11:29:41
Quote Anchor link
Ja inderdaad.

Daarnaast zie ik nog het volgende:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if ($this->error['total_errors'] == '0'){
?>


0 is een integer dus dan moet je dat ook als integer controleren.
Ook zie ik dat hij diversen variabelen gebruikt maar die niet gedefinieerd heeft.

Maar goed dit is nog het belangrijkste:
Quote:
Een watermerk een een afbeelding zijn toch twee verschillende zaken? Afgezien van het feit dat ze wel met elkaar te maken hebben.
Gewijzigd op 11/01/2012 11:29:53 door Niels K
 
Wouter J

Wouter J

11/01/2012 11:35:51
Quote Anchor link
Ook img::image($pathtoimage) of al die andere methods die je aanroept in de class zelf. Het is toch veel beter om $this->image($pathtoimage) te gebruiken?
 
Kris Peeters

Kris Peeters

11/01/2012 12:50:46
Quote Anchor link
Gunther Peeters op 10/01/2012 19:46:24:
...
@Kris: Geen return
...


Ik zal eens tonen wat ik bedoel.
Dit is jouw script, maar een beetje aangepast.

index.php
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
<?php
/*
Dit script verwacht drie files: "watermark.gif", "trein.jpg" en "auto.jpg"
*/

session_start();
require_once('watermark.php');

if (!empty($_GET['w'])) {
  switch($_GET['w']) {
    case
1:
      $img = new img();
      $img->image('trein.jpg')            // URL naar de afbeelding
          ->watermark('watermark.gif')    // URL naar het watermerk
          ->align('right')                // Positie van het watermerk (Left, Center, Right of een getal...
          ->valign('bottom')              // Positie van het watermerk (Top, Center, Bottom of een getal...
          ->transparent('50');            // Doorzichtigheid van het watermerk (0 -> 100);

      if ($img->error['total'] != '0') {
          print '<pre>';
          print_r($img);
          print '</pre>';
      }
else {
          $img->show();
      }

      break;
    case
2:
      $img = new img();
      $img->image('auto.jpg')            // URL naar de afbeelding
          ->watermark('watermark.gif')    // URL naar het watermerk
          ->align('left')               // Positie van het watermerk (Left, Center, Right of een getal...
          ->valign('top')              // Positie van het watermerk (Top, Center, Bottom of een getal...
          ->transparent('50');            // Doorzichtigheid van het watermerk (0 -> 100);

      if ($img->error['total'] != '0') {
          print '<pre>';
          print_r($img);
          print '</pre>';
      }
else {
          $img->show();
      }

      break;
  }
}

else {
  echo '<img src="?w=1"/> <img src="?w=2"/>';
}

?>


watermark.php
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
<?php
    /***********************************************************
    * Een Class om een watermerk op een afbeelding te plaatsen *
    ***********************************************************/

class img {
    // Construct => Benodigheden om de class te starten
    function __construct($pathtoimage = NULL, $pathtowatermark = NULL, $watermarkalign = 'left', $watermarkvalign = 'top', $watermarktransparent = '100') {

        // Foutmeldingen
        $this->error['total'] = '0';
        $this->error['image'] = $pathtoimage;
        $this->error['watermark'] = $pathtowatermark;

        // Afbeelding
        if ($pathtoimage != NULL) { img::image($pathtoimage); }

        // Watermerk
        if ($pathtowatermark != NULL) { img::watermark($pathtowatermark); }

        // Positie van het watermerk
        img::align($watermarkalign);
        img::valign($watermarkvalign);

        // Doorzichtigheid van het watermerk
        img::transparent($watermarktransparent);
    }


    // Controleer de afbeelding
    function image($pathtoimage = NULL) {
        $this->error['image'] = $pathtoimage;
        // Controleer op afbeelding
        if ($this->error['image'] == NULL) {
            $this->error['total'] ++;
            $this->error['image'] = 'No Image!';
        }
else
        // Controleer op bestaande afbeelding
        if (!file_exists($this->error['image'])) {
            $this->error['total'] ++;
            $this->error['image'] = 'Image Not Found!';
        }
else
        if (!$this->picture = getimagesize($this->error['image'])) {
            $this->error['total'] ++;
            $this->error['image'] = 'Not An Image!';
        }

      return $this;
    }


    // Controleer het watermerk
    function watermark($pathtowatermark = NULL) {
        $this->error['watermark'] = $pathtowatermark;
        // Controleer op watermerk
        if ($this->error['watermark'] == NULL) {
            $this->error['total'] ++;
            $this->error['watermark'] = 'No Watermark!';
        }
else
        // Controleer op bestaande watermerk
        if (!file_exists($this->error['watermark'])) {
            $this->error['total'] ++;
            $this->error['watermark'] = 'Watermark Not Found!';
        }
else
        // Controleer het watermerk is een afbeelding
        if (!$this->watermark = getimagesize($this->error['watermark'])) {
            $this->error['total'] ++;
            $this->error['watermark'] = 'Not A Watermark!';
        }


      return $this;
    }


    // Posititie van het watermerk (Links => Midden => Rechts => Getal [Links -> Rechts])
    function align($watermarkalign = 'left') {
        if ($this->error['total'] == '0') {
            switch($watermarkalign) {
                case
'left':
                    $this->align = '0';
                    break;
                case
'center':
                    $this->align = round($this->picture['0'] / 2) - round($this->watermark['0'] / 2);
                    break;
                case
'right':
                    $this->align = round($this->picture['0']) - round($this->watermark['0']);
                    break;
                case
is_numeric($watermarkalign):
                    $this->align = round($watermarkalign);
                    break;
                default:

                    $this->error['total'] ++;
                    $this->error['watermark'] = 'Not A Valid Input For align! (USE `left`, `right`, `center` OR a number)';
            }
        }

      return $this;
    }


    // Posititie van het watermerk (Boven => Midden => Onder => Getal [Boven -> Onder])
    function valign($watermarkvalign = 'top') {
        if ($this->error['total'] == '0') {
            switch($watermarkvalign) {
                case
'top':
                    $this->valign = '0';
                    break;
                case
'center':
                    $this->valign = round($this->picture['1'] / 2) - round($this->watermark['1'] / 2);
                    break;
                case
'bottom':
                    $this->valign = round($this->picture['1']) - round($this->watermark['1']);
                    break;
                case
is_numeric($watermarkvalign):
                    $this->valign = round($watermarkvalign);
                    break;
                default:

                    $this->error['total'] ++;
                    $this->error['watermark'] = 'Not A Valid Input For valign! (USE `top`, `bottom`, `center` OR a number)';
            }
        }

      return $this;
    }


    // Doorzichtigheid van het watermerk
    function transparent($watermarktransparent = '100') {
        if (!is_numeric($watermarktransparent)) {
            $this->error['total'] ++;
            $this->error['watermark'] = 'Not A Valid Number For transparent! (USE a number BETWEEN 0 - 100)';
        }
else
        if ($watermarktransparent > '100' || $watermarktransparent < '0') {
            $this->error['total'] ++;
            $this->error['watermark'] = 'Not A Valid Number For transparent! (USE a number BETWEEN 0 - 100)';
        }
else {
            $this->transparent = round($watermarktransparent);
        }

      return $this;
    }


    // Afbeelding maken
    private function createImg($image = NULL, $mime = NULL) {
        switch($mime) {
            case
'image/gif':
                return imagecreatefromgif($image);
                break;
            case
'image/jpg':
                return imagecreatefromjpeg($image);
                break;
            case
'image/jpeg':
                return imagecreatefromjpeg($image);
                break;
            case
'image/png':
                return imagecreatefrompng($image);
                break;
            default:

                return imagecreatefromjpeg($image);
                break;
        }
    }


    // Afbeelding maken
    private function setImage() {
        $this->imgPicture = img::createImg($this->error['image'], $this->picture['mime']);
    }


    // Watermerk maken
    private function setWatermark() {
        $this->imgWatermark = img::createImg($this->error['watermark'], $this->watermark['mime']);
    }


    // Toon de afbeelding
    function show() {
        img::setImage();
        img::setWatermark();
        imagecopymerge($this->imgPicture, $this->imgWatermark, $this->align, $this->valign, 0, 0, $this->watermark['0'], $this->watermark['1'], $this->transparent);
        switch($this->picture['mime']) {
            case
'image/gif':
                header('Content-type: image/gif');
                imagegif($this->imgPicture);
                break;
            case
'image/png':
                header('Content-type: image/png');
                imagepng($this->imgPicture);
                break;
            default:

                header('Content-type: image/jpeg');
                imagejpeg($this->imgPicture);
                break;
        }

        imagedestroy($this->imgPicture);
        imagedestroy($this->imgWatermark);
    }
}

?>
Gewijzigd op 11/01/2012 12:51:49 door Kris Peeters
 
Jelle -

Jelle -

11/01/2012 13:42:45
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

img::image($pathtoimage);

?>


Dit zijn static aanroepen en niet object aanroepen. Geen idee waarom je dat doet je functies zijn ook niet static. Do you know?
 
Kris Peeters

Kris Peeters

11/01/2012 14:27:55
Quote Anchor link
Wel ja, daar kan nog aan gewerkt worden. De static functies als static bestempelen, en ze zo ook gebruiken.

Als de functie niet static is, spreek je ze aan met $this->functienaam(), als ze static zijn met self::functienaam()
 
G P

G P

12/01/2012 11:52:32
Quote Anchor link
Hartelijk bedankt iedereen voor al deze mooie commentaren, ik zal hierbij ZEKER rekening houden. Zodra dit script een update krijgt zal ik deze ook meteen plaatsen.
 
G P

G P

08/09/2012 12:26:00
Quote Anchor link
NIEUWE UPDATE:

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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
<?php

class newImage {
    // STAAT HIER MAAR OM ZAKEN TOE TE VOEGEN ALS HET NODIG IS BIJ EEN UPDATE
    public function __construct(){
    }


    /**************************************************\
        URL NAAR AFBEELDING
    \**************************************************/

    public function set_image($path_to_image = false, $opacity = 0, $rotate = 0){
        if ($path_to_image && file_exists($path_to_image)){
            $this->path_to_image = $path_to_image;
        }

        if ($rotate < 0){
            $rotate = 0;
        }
elseif ($rotate > 360){
            $rotate = 360;
        }
else {
            $rotate = floor($rotate);
        }

        $this->imageRotate = $rotate;
        $this->checkImage();
    }


    /**************************************************\
        URL NAAR WATERMERK
    \**************************************************/

    public function set_watermark($path_to_watermark = false, $horizontal_position = 'center', $vertical_position = 'center', $opacity = 0, $rotate = 0){
        if ($path_to_watermark && file_exists($path_to_watermark)){
            $this->path_to_watermark = $path_to_watermark;
            if ($rotate < 0){
                $rotate = 0;
            }
elseif ($rotate > 360){
                $rotate = 360;
            }
else {
                $rotate = floor($rotate);
            }

            $this->watermarkHorizontalPosition = $horizontal_position;
            $this->watermarkVerticalPosition = $vertical_position;
            $this->watermarkRotate = $rotate;
            $this->checkWatermark();
        }
    }


    /**************************************************\
        TEKST GEGEVENS
    \**************************************************/

    public function set_text($text_string = NULL, $text_color = '900', $background_color = 'FFF', $font_size = 0){
        // CONTROLEER AFBEELDING
        $this->showImage = isset($this->showImage) ? $this->showImage : NULL;
        if (!$this->showImage){ $this->checkImage(); }
        // CONTROLEER TEKST
        if (!$text_string && strlen($text_string) < 1){
            $this->text = 'Damn... You\'ve forgotten the text !';
        }
else {
            $this->text = $text_string;
        }

        // CONTROLEER TEKSTKLEUR
        if ($text_color && strlen($text_color) >= 3 && strlen($text_color) <= 7){
            $text_color = '#'.str_replace('#', '', $text_color);
        }
else {
            $text_color = '#FFF';
        }

        $this->text_color = $this->hex2RGB($text_color);
        // CONTROLEER ACHTERGROND KLEUR
        if ($background_color && strlen($background_color) >= 3 && strlen($background_color) <= 7){
            $background_color = '#'.str_replace('#', '', $background_color);
        }
else {
            $background_color = '#000';
        }

        $this->background_color = $this->hex2RGB($background_color);
        // CONTROLEER TEKST GROOTTE
        $this->font_size =    round($font_size) > 62    ? 62    :
                            round($font_size) < 12    ? 12    :
                            round($font_size);
        $this->checkText();
    }


    /**************************************************\
        KLEUR VERANDEREN
    \**************************************************/

    public function swap_colors($old_color = 'FFF', $new_color = '000'){
        // CONTROLEER AFBEELDING
        $this->showImage = isset($this->showImage) ? $this->showImage : NULL;
        if (!$this->showImage){ $this->checkImage(); }
        // CONTROLEER OUDE KLEUR
        if ($old_color && strlen($old_color) >= 3 && strlen($old_color) <= 7){
            $old_color = '#'.str_replace('#', '', $old_color);
        }
else {
            $old_color = '#FFF';
        }

        $old_rgb = $this->hex2RGB($old_color);
        // CONTROLEER NIEUWE KLEUR
        if ($new_color && strlen($new_color) >= 3 && strlen($new_color) <= 7){
            $new_color = '#'.str_replace('#', '', $new_color);
        }
else {
            $new_color = '#FFF';
        }

        $new_rgb = $this->hex2RGB($new_color);
        // KLEUR WISSELEN
        imagetruecolortopalette($this->showImage, true, 216);
        $switchColor = imagecolorclosest($this->showImage, $old_rgb['red'], $old_rgb['green'], $old_rgb['blue']);
        imagecolorset($this->showImage, $switchColor, $new_rgb['red'], $new_rgb['green'], $new_rgb['blue']);
    }


    /**************************************************\
        AFBEELDING CONTROLEREN
    \**************************************************/

    private function checkImage(){
        // CONTROLEER PAD NAAR DE AFBEELDING
        $this->path_to_image = isset($this->path_to_image) ? $this->path_to_image : false;
        if ($this->path_to_image){
            // OPHALEN VAN AFBEELDING GEGEVENS
            $infoImage = getimagesize($this->path_to_image);
            // JPG / JPEG
            if ($infoImage['mime'] == 'image/jpeg'){
                $image = @imagecreatefromjpeg($this->path_to_image);
            }
else
            // PNG
            if ($infoImage['mime'] == 'image/png'){
                $image = @imagecreatefrompng($this->path_to_image);
            }
else
            // GIF
            if ($infoImage['mime'] == 'image/gif'){
                $image = @imagecreatefromgif($this->path_to_image);
            }
else
            // GEEN AFBEELDING GEVONDEN MAAK ZELF
            {
                $image = @imagecreate(500, 500);
                imagecolorallocatealpha($image, 0, 0, 0, 0);
                $infoImage['0'] = 500;
                $infoImage['1'] = 500;
            }
        }
else {
            $image = @imagecreate(500, 500);
            imagecolorallocatealpha($image, 0, 0, 0, 0);
            $infoImage['0'] = 500;
            $infoImage['1'] = 500;
        }

        // AFBEELDING DRAAIEN
        $image = imagerotate($image, $this->imageRotate, imagecolorallocatealpha($image, 0, 0, 0, 127));
        imagealphablending($image, false);
        imagesavealpha($image, true);
        // DOORSTUREN VAN BENODIGDE GEGEVENS
        $this->showImage = $image;
        $this->image_width = imagesx($image);
        $this->image_height = imagesy($image);
    }


    /**************************************************\
        WATERMERK CONTROLEREN
    \**************************************************/

    private function checkWatermark(){
        // CONTROLEER AFBEELDING
        $this->showImage = isset($this->showImage) ? $this->showImage : NULL;
        if (!$this->showImage){ $this->checkImage(); }
        // CONTROLEER PAD NAAR HET WATERMERK
        $this->path_to_watermark = isset($this->path_to_watermark) ? $this->path_to_watermark : false;
        if ($this->path_to_watermark){
            // INFORMATIE VAN HET WATERMERK
            $infoWatermark = getimagesize($this->path_to_watermark);
            // JPG / JPEG
            if ($infoWatermark['mime'] == 'image/jpeg'){
                $watermark = @imagecreatefromjpeg($this->path_to_watermark);
            }
else
            // PNG
            if ($infoWatermark['mime'] == 'image/png'){
                $watermark = @imagecreatefrompng($this->path_to_watermark);
            }
else
            // GIF
            if ($infoWatermark['mime'] == 'image/gif'){
                $watermark = @imagecreatefromgif($this->path_to_watermark);
            }

            $bg = imagecolorallocatealpha($watermark, 0, 0, 0, 127);
            imagefill($watermark, 0, 0 , $bg);
            // AFBEELDING DRAAIEN
            $watermark = imagerotate($watermark, $this->watermarkRotate, $bg);
            imagealphablending($watermark, false);
            imagesavealpha($watermark, true);
            // BEREKENING OM HET WATERMERK IN HET MIDDEN VAN DE AFBEELDING TE PLAATSEN
            $width = imagesx($watermark);
            $height = imagesy($watermark);
            // WATERMERK HORIZONTAAL POSITIONEREN
            if ($this->watermarkHorizontalPosition == 'center'){
                $center_x = ($this->image_width - $width) / 2;
            }
elseif ($this->watermarkHorizontalPosition == 'left'){
                $center_x = 0;
            }
elseif ($this->watermarkHorizontalPosition == 'right'){
                $center_x = $this->image_width - $width;
            }
else {
                $center_x = round($this->watermarkHorizontalPosition);
                if (($center_x + $width) > $this->image_width){
                    $center_x = $this->image_width - $width;
                }
elseif ($this->watermarkHorizontalPosition < 0){
                    $center_x = ($this->image_width - $width) + $this->watermarkHorizontalPosition;
                    if ($center_x < 0){ $center_x = 0; }
                }
            }

            // WATERMERK VERTIKAAL POSITIONEREN
            if ($this->watermarkVerticalPosition == 'center'){
                $center_y = ($this->image_height - $height) / 2;
            }
elseif ($this->watermarkVerticalPosition == 'top'){
                $center_y = 0;
            }
elseif ($this->watermarkVerticalPosition == 'bottom'){
                $center_y = $this->image_height - $height;
            }
else {
                $center_y = round($this->watermarkVerticalPosition);
                if (($center_y + $width) > $this->image_height){
                    $center_y = $this->image_height - $width;
                }
elseif ($this->watermarkVerticalPosition < 0){
                    $center_y = ($this->image_height - $width) + $this->watermarkVerticalPosition;
                    if ($center_y < 0){ $center_y = 0; }
                }
            }

            imagecopy($this->showImage, $watermark, $center_x, $center_y, 0, 0, $width, $height);
        }
    }


    /**************************************************\
        TEKST CONTROLEREN
    \**************************************************/

    private function checkText(){
        // CONTROLEER AFBEELDING
        $this->showImage = isset($this->showImage) ? $this->showImage : NULL;
        if (!$this->showImage){ $this->checkImage(); }
        // CONTROLEER TEKST
        $this->text = isset($this->text) ? $this->text : false;
        if ($this->text){
            // MAAK ACHTERGROND
            $box_width = $this->image_width;
            $box_height = $this->font_size * 2;
            $box = imagecreatetruecolor($box_width, $box_height);
            $boxcolor = imagecolorallocatealpha($box, $this->background_color['red'], $this->background_color['green'], $this->background_color['blue'], 0);
            imagefilledrectangle($box, 0, 0, $box_width, $box_height, $boxcolor);

            // MAAK TEKST
            $x_box = ($box_width / 2) - ((strlen($this->text) * $this->font_size) / 2.75);
            $y_box = ($this->font_size * 1.5);
            $textColor = imagecolorallocatealpha($box, $this->text_color['red'], $this->text_color['green'], $this->text_color['blue'], 0);
            $font = 'BKANT.TTF'; // WIJZIG DE NAAM NAAR JOUW FONT-TYPE
            imagefttext($box, $this->font_size, 0, $x_box, $y_box, $textColor, $font, $this->text);

            // TEKST IN HET MIDDEN PLAATSEN
            $center = ($this->image_height / 2) - ($box_height / 2);
            imagecopy($this->showImage, $box, 0, $center, 0, 0, $box_width, $box_height);
        }
    }


    /**************************************************\
        OMZETTEN KLEUR VAN HEX NAAR DEC
    \**************************************************/

    private function hex2RGB($hexStr) {
        // VERWIJDER ONNODIGE TEKENS
        $hexStr = preg_replace("/[^0-9A-Fa-f]/", '', $hexStr);
        $rgbArray = array();
        // OMZETTEN VAN 6 TEKENS NAAR RGB
        if (strlen($hexStr) == 6) {
            $colorVal = hexdec($hexStr);
            $rgbArray['red'] = 0xFF & ($colorVal >> 0x10);
            $rgbArray['green'] = 0xFF & ($colorVal >> 0x8);
            $rgbArray['blue'] = 0xFF & $colorVal;
        }
else
        // OMZETTEN VAN 3 TEKENS NAAR RGB
        if (strlen($hexStr) == 3) {
            $rgbArray['red'] = hexdec(str_repeat(substr($hexStr, 0, 1), 2));
            $rgbArray['green'] = hexdec(str_repeat(substr($hexStr, 1, 1), 2));
            $rgbArray['blue'] = hexdec(str_repeat(substr($hexStr, 2, 1), 2));
        }
else
        // ONGELDIG KLEURWAARDE
        {
            return false;
        }

        // TERUG STUREN VAN RGB
        return $rgbArray;
    }


    /**************************************************\
        TOON DE AFBEELDING
    \**************************************************/

    public function show_image(){
        // CONTROLEER AFBEELDING
        $this->showImage = isset($this->showImage) ? $this->showImage : NULL;
        if (!$this->showImage){ $this->checkImage(); }
        // AFBEELDING TONEN
        header('Content-Type: image/png');
        imagepng($this->showImage);
        imagedestroy($this->showImage);
    }


    /**************************************************\
        BEWAAR DE AFBEELDING
    \**************************************************/

    public function save_image($new_name = NULL, $save_to_folder = NULL, $show_image = false){
        // CONTROLEER AFBEELDING
        $this->showImage = isset($this->showImage) ? $this->showImage : NULL;
        if (!$this->showImage){ $this->checkImage(); }
        // CONTROLEER NAAM
        if (!$new_name || strlen($new_name) < '1' || strlen($new_name) > '255'){
            $new_name = time();
        }

        // CONTROLEER MAP
        if (!$save_to_folder || strlen($save_to_folder) < 1){ $save_to_folder = '.'; }
        $i = 0;
        $checkName = $new_name;
        // GEEF EEN NIEUWE NAAM ALS DE AFBEELDING AL BESTAAT
        while (file_exists($save_to_folder.'/'.$new_name.'.png')){
            $i++;
            $new_name = $checkName.'_'.$i;
        }

        // AFBEELDING TONEN ?
        if ($show_image === true){
            header('Content-Type: image/png');
            imagepng($this->showImage);
        }

        // BEWAREN
        imagepng($this->showImage, $save_to_folder.'/'.$new_name.'.png');
        imagedestroy($this->showImage);
    }

}

}


?>
Hoe aanroepen?
$img = new newImage;

// AFBEELDING TOEVOEGEN
$img->set_image('URL_NAAR_AFBEELDING.PNG/GIF/JPG', 0, KANTELEN);
KANTELEN: 0° tot 360°

// WATERMERK TOEVOEGEN
$img->set_watermark('URL_NAAR_WATERMERK.PNG/GIF/JPG', X, Y, 0, KANTELEN);
X: left, right, center, GETAL
GETAL: Het getal kan een positief of een negatief getal zijn.
Een positief getal wordt berekent van links naar rechts, negatief wordt berekent van rechts naar links.
Y: top, bottom, center, GETAL
GETAL: Het getal kan een positief of een negatief getal zijn.
Een positief getal wordt berekent van boven naar beneden, negatief wordt berekent van beneden naar boven.
KANTELEN: Idem als bij afbeelding

*** NIEUW ***
// TEKST TOEVOEGEN
$img->set_text('MIJN TEKST', 'TEKSTKLEUR', 'ACHTERGRONDKLEUR', 'TEKSTGROOTTE');

*** NIEUW ***
// KLEUR WISSELEN VAN DE AFBEELDING
$img->swap_color('OUDE_KLEUR', 'NIEUWE_KLEUR');

// TOON DE AFBEELDING
$img->show_image();

*** NIEUW ***
// AFBEELDING BEWAREN EN TONEN
$img->save_image('NAAM', 'MAP', true/false);

*** TOEKOMST GERICHT ***
- Afbeeldingen en tekst draaien
- Afbeeldingen en tekst transparant maken
- Horizontaal en verticaal positioneren van afbeeldingen en tekst

Wederom zijn jullie ideeën en gedachten welkom !!!
Gewijzigd op 09/09/2012 16:47:29 door G P
 
- Raoul -

- Raoul -

09/09/2012 14:29:47
Quote Anchor link
img of newImage zijn allebei geen correcte namen voor een class

Toevoeging op 09/09/2012 14:30:12:

Ikzelf zou een class Watermerk en een class Image maken.
 
G P

G P

09/09/2012 16:11:45
Quote Anchor link
Update !

- Het draaien van afbeelding en van watermerk
- Het horizontaal en verticaal positioneren van het watermerk

- Raoul - op 09/09/2012 14:29:47:
img of newImage zijn allebei geen correcte namen voor een class
Ik weet het, heb er al zelf een paar keren problemen mee gehad, 2x new achter elkaar is verwarrend. Een suggestie is dus welkom :)
- Raoul - op 09/09/2012 14:29:47:
Ikzelf zou een class Watermerk en een class Image maken.
Ik denk dat het ieder zijn goesting* is.

Goesting* : Zin
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

09/09/2012 16:46:48
Quote Anchor link
Alleeh hé, goesting of nie, ik vin ut krek un goe idee ;-)
 
G P

G P

09/09/2012 17:01:42
Quote Anchor link
Offtopic:
ut? krek? un? Nederlands dat versta ik nog, belgisch lukt ook wel maar mijn chinees is niet zo goed meer als vroeger...
Ut, is waarschijnlijk het en Un is dan wel een maar met krek heb ik geen flauw idee
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

09/09/2012 17:35:20
Quote Anchor link
Offtopic:

Lol GP, krek is voor jou wat goesting is voor het grootste gedeelte van de Hollanders.
Ter info:
Krek is plat WZN-brabants en kan afhankelijk van de cotext waarin het gebruikt wordt verataald worden als 'echt wel', 'mijn kop eraf', etc.
Gewijzigd op 09/09/2012 17:43:46 door Ger van Steenderen
 
- Raoul -

- Raoul -

09/09/2012 17:39:06
Quote Anchor link
G P op 09/09/2012 16:11:45:
- Raoul - op 09/09/2012 14:29:47:
img of newImage zijn allebei geen correcte namen voor een class
Ik weet het, heb er al zelf een paar keren problemen mee gehad, 2x new achter elkaar is verwarrend. Een suggestie is dus welkom :)
- Raoul - op 09/09/2012 14:29:47:
Ikzelf zou een class Watermerk en een class Image maken.
Ik denk dat het ieder zijn goesting* is.


Daar ben ik het niet mee eens. Ieder zijn zin of niet, de manier waarop je OOP doet moet gewoon correct zijn.
Iedere klasse moet 1 bepaalde taak hebben, niet een image renderen en er een watermerk op tonen, dat zijn al 2 taken.

In OOP moet je ook denken in objecten, "newImage" is geen object. "Image" bijvoorbeeld wel.
In real life heb je toch ook geen object "nieuwe fiets", het woord "nieuwe" is een bijvoegelijk naamwoord dat hoort bij fiets. Het object is dus fiets.

Ik raad je dit eens aan om door te lezen: correcte klasse naamgeving
Gewijzigd op 09/09/2012 17:39:43 door - Raoul -
 

Pagina: 1 2 volgende »



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.