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

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.Net ontwikkelaars voor de zorgsector

Bedrijfsomschrijving Voor onze klant in de omgeving van Zwolle zijn wij op zoek naar een ervaren .Net ontwikkelaar, bij voorkeur met ervaring binnen de belangrijkste sector van Nederland, namelijk: de zorgsector. Deze internationale organisatie ontwikkelt software voor de zorgsector. Er werken zo'n 25 medewerkers hard aan een oplossing die gebruikt wordt door heel Nederland. Er heerst een informele sfeer waarbij er altijd ruimte is voor een grapje. Je collega's zijn stuk voor stuk sterke ontwikkelaars vanuit verschillende achtergronden en met verschillende leeftijden. Je komt hier terecht in een organisatie die zich hard inzet om de zorgsector te verbeteren. De mogelijkheden

Bekijk vacature »

Software developer - senior

Functie omschrijving Voor een echt softwarebedrijf in omgeving Gouda zijn wij op zoek naar versterking voor de afdeling Software Development! Ben jij op zoek naar een werkgever waar meerdere software developers werken aan interessante projecten? Ben jij op zoek naar een werkgever waar je onderdeel wordt van een team dat echt passie heeft voor het ontwikkelen van software? Dan ben je hier aan het juiste adres! Als softwareontwikkelaar kom je terecht bij een onafhankelijk, door kwaliteit gedreven, doortastend en daarbij op een Agile wijze werkend bedrijf. Ben jij een expert in het vertalen van Componenten van Functionaliteit naar Business lagen?

Bekijk vacature »

Medior/senior PHP ontwikkelaar E-commerce

Functie Het software development team bestaat momenteel 5 scrum teams . Ieder team heeft een eigen SCRUM Master en eigen tester. Zij werken voornamelijk in PHP en met hun eigen geschreven framework wat Symfony based is . Jij bent samen met je collega’s verantwoordelijk voor het interne softwaresysteem en alle projecten die daar omheen lopen. Alles wat jij ontwikkelt, wordt direct toegepast en uitgerold (wereldwijd). Dit maakt jouw werk tastbaar en uitdagend! Een greep uit jouw werkzaamheden: Toevoegen en ontwikkelen van nieuwe functionaliteiten Logistieke software ontwikkelen voor intern gebruik Tientallen gigabytes aan data inzichtelijk maken Altijd op zoek gaan naar

Bekijk vacature »

.NET developer

Functie Voor jou als junior .NET ontwikkelaar staat er een flinke uitdaging klaar bij dit bedrijf waar jij veel van kan gaan leren. Zo willen zij een flinke uitbreiding doen op het webbased gedeelte dat zij nu hebben en willen zij het standaard deel gaan moderniseren. Jouw team is dan ook op zoek naar een junior .NET ontwikkelaar die het leuk vindt om op basis van research en development aan de slag te gaan. Jouw mening telt mee als het gaat om hoe en met wat deze applicaties gebouwd en herschreven gaan worden. Jouw functie bij dit bedrijf gaat dan

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 »

.NET Developer Senior

Dit ga je doen Het ontwikkelen van backend applicaties in C#; Het maken van vele koppelingen met andere ERP-applicaties zoals JD Edwards en SAP; Je bent (mede) verantwoordelijk voor het opstellen van technisch ontwerpen voor de te ontwikkelen software oplossingen; Je bent gemiddeld 90% van je tijd inhouse oplossingen aan het ontwikkelen en testen. De overige 10% van je tijd ben je bij klanten op locatie om oplossingen te implementeren, klanten te begeleiden en de software verder te innoveren; Naast het zelfstandig ontwikkelen van software oplossingen ben je ook bezig met het waarborgen van je contacten bij de klant, het

Bekijk vacature »

Cloud Engineer

Ben jij een ervaren Cloud Engineer die complexe omgevingen kan overzien en wil je graag in vaste dienst werken bij een professioneel en kleinschalig bedrijf waar je een belangrijke rol kan spelen? Wij, IntelliMagic in Leiden, ontwikkelen specialistische IT monitoring software die we als SaaS oplossing verkopen aan grote bedrijven in Europa en de VS. We zijn een Nederlands bedrijf met een goede sfeer en met grote waardering voor de persoonlijke inbreng en kwaliteiten van onze medewerkers. Wij zoeken een ervaren Cloud Engineer met academisch denkniveau die verantwoordelijk wordt voor het beheer van de cloud infrastructuur voor onze Europese klanten.

Bekijk vacature »

Front-end PHP Developer

Dit ga je doen Bouwen van de frontend van een nieuwe applicaties; Verbeteren van de user experience; Opstellen van een style guide; Schakelen met collega developers over de te bouwen oplossing; Je speelt een belangrijke rol in het neerzetten van het nieuwe systeem; Werken met o.a. Symfony 6, API Platform, Twig, Javascript, Redis Automatiseren van processen; Koppelen van verschillende functionaliteiten; Unit tests, integration tests, end-to-end tests; In de toekomst ga je nog werken aan andere projecten. Hier ga je werken Voor onze vaste opdrachtgever in de regio Breda zijn wij op zoek naar een Frontend Developer. Het betreft een organisatie

Bekijk vacature »

PHP Developer

Functie omschrijving Als PHP / Laravel developer zal je in een klein team terecht komen. Wij zijn op zoek naar een echte specialist, iemand die de balans weet te vinden tussen techniek en perfectie. In de aankomende jaren wilt dit bedrijf flink groeien en daarom zijn ze op zoek naar jou! Wat ga je doen? Je draagt bij aan het ontwikkelen en onderhouden van bestaande webapplicaties die boordevol functionaliteit zitten. Deze applicaties worden gebruikt door de organisatie zelf en ook door de klanten. Inmiddels wordt er gewerkt met Laravel 8 en zijn er diverse koppelingen naar externe leveranciers. Verder zal

Bekijk vacature »

PHP Developer

Functieomschrijving Vanuit het hoofdkantoor in omgeving Roosendaal, ontwikkel je als PHP Developer niet alleen webapplicaties, maar ben je verder ook gefocust op het continu inspelen op nieuwe trends en ontwikkelingen m.b.t software development. Naast het bouwen van webapplicaties, ontwikkelen zij ook webshops en websites voor gave opdrachtgevers! Wat ga je doen? Het schrijven van schone en efficiënte codes volgens het Symfony framework; Het ontwerpen en implementeren van webapplicaties met het Symfony-framework; Onderhouden en updaten van bestaande applicaties die zijn gebouwd met het Symfony framework; Het testen van ontwikkelde applicaties om te zorgen dat ze goed functioneren en voldoen aan de

Bekijk vacature »

Developer Angular & Kotlin

Dit ga je doen Het (door)ontwikkelen van mobiele apps en webapplicaties; Het opstellen van technisch ontwerp en het bespreken van ontwerpen met de software architect; Het uitvoeren van werkzaamheden op het gebied van technisch testen; Het in de gaten houden van nieuwe ontwikkelingen op jouw vakgebied en het adviseren van de organisatie hierover. Hier ga je werken Het gaat om een bekend internationaal handelsbedrijf met ruim 800 medewerkers, verdeeld over verschillende deelbedrijven. Deze organisatie is van oorsprong een familiebedrijf, er wordt hard gewerkt, er heerst een no nonsense en doeners mentaliteit, een informele sfeer en er is een mix van

Bekijk vacature »

Senior pega developer

You work on software that makes colleagues and customers happy! Thanks to your IT skills, De Mandemakers Groep really makes a difference for its customers. Do coding, testing and deployments make your heart beat faster? Then apply today as Senior Pega Developer at De Mandemakers Groep! Wat ga je doen? The job title gives it away: You will be developing Pega software. This ranges from technical design, coding and testing to test automation, deployments and bug fixing. Your goal is to continuously improve our systems so that colleagues can work efficiently and customers receive optimal service. You don't have to

Bekijk vacature »

Medior/senior Fullstack developer

Functie Onder begeleiding van 3 accountmanagers waarvan er 1 binnen jouw expertise je aanspreekpunt zal zijn ga je aan de slag bij diverse opdrachtgevers. Hij of zij helpt je bij het vinden van een passende en uitdagende opdracht. Hierin houden ze uiteraard rekening met jouw situatie, ervaring en (technische) ambities. De opdrachten duren gemiddeld één tot 2 jaar. Hierdoor kun je je ook echt vastbijten in een project en als consultant impact maken. Naast de opdracht ben je regelmatig met je collega’s van de IT-afdeling om bijvoorbeeld onderlinge kennis te delen, of nieuwe trends te bespreken. Ook worden er regelmatig

Bekijk vacature »

.NET Developer

Functie omschrijving Ervaren .NET Developer gezocht! Wij zoeken een ervaren .NET developer die aan de slag gaat voor een softwarebedrijf in de regio Rhenen. In deze rol ben jij zowel zelfstandig als in teamverband verantwoordelijk voor het ontwikkelen en verbeteren van bestaande producten. Daarnaast houdt jij je bezig met de nieuwbouw van websites, webapplicaties en mobiele applicaties die zowel intern als extern gebruikt worden. Je werkt hierbij nauw samen met andere developer, productmanagers en product specialisten om mooie producten te creëren. Bedrijfsprofiel Waar kom je te werken? Je komt te werken voor snelgroeiende softwareleverancier en allround dienstverlener. Klanten van deze

Bekijk vacature »

Laravel / PHP developer gezocht!

Functie omschrijving Wij zijn op zoek naar een Laravel PHP Developer voor een leuk bedrijf in de omgeving van Amsterdam! Je zult je bezig houden met de volgende werkzaamheden: Je gaat aan de hand van de wensen van klanten software ontwikkelen; Je bent bij het gehele proces betrokken; van A tot Z; Je hebt na de oplevering contact met de klant wanneer zij problemen ervaren; Je denkt mee over het verbeteren van de werkprocessen; Je denkt mee over softwareoplossingen; Je speelt in op de behoefte van de klant; Je houdt je bezig met het verbeteren, aanpassen en vernieuwen van de

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

20/04/2024 00:50:26
 
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.