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

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior .Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

Senior Java Ontwikkelaar

Dit ga je doen Werken aan uiteenlopende interne projecten voor grote (internationale) organisaties; Ontwikkelen van diverse (web)applicaties en platformen met technieken als Java, Azure en ASP.NET; Complexe vraagstukken tackelen met jouw expertise en ervaring; Waar nodig help jij je collega's om samen tot de juiste oplossing te komen. Hier ga je werken Als Java Developer kom je te werken bij een internationale organisatie in regio Amsterdam die zich richt op procesoptimalisatie door middel van zeer complexe IT oplossingen. Dit doen zij op het allerhoogste niveau met vestigingen over heel de wereld en met een groot aantal aansprekende, maatschappelijk betrokken klanten.

Bekijk vacature »

Applicatiebeheerder/ Ontwikkelaar

Dit ga je doen - Verantwoordelijkheid dragen voor het complexe applicatielandschap; - Schakelen met eindgebruikers en leveranciers; - Verdeling in werkzaamheden tussen dagelijks beheer ontwikkelen; - Het analyseren van de behoeften van gebruikers en het vertalen hiervan naar functionele specificaties voor de applicaties; - Actief bijdragen aan het leveren van passende oplossingen voor het applicatielandschap. Hier ga je werken Deze organisatie, gevestigd in de regio van Amsterdam is een van de meest toonaangevende mediaorganisaties in Nederland. Door de organisatiecultuur krijg jij veel ruimte om initiatief te nemen en zelfstandig aan het werk te gaan. Samen met het IT team zorg

Bekijk vacature »

Java Developer

Java Developers opgelet! Bij Luminis zijn ze opzoek naar jou. Lees de vacature en solliciteer direct. Luminis is een software- en technologiebedrijf met meerdere vestigingen. Vanuit deze vestigingen werken 200 professionals aan technisch hoogwaardige oplossingen voor klanten zoals KLM, Nike en Bol.com. Ook ontwikkelt Luminis eigen oplossingen op het gebied van cloud, Internet of Things, data intelligence, e-sports en e-learning. Luminis onderscheidt zich door aantoonbaar voorop te lopen in technologie en innovatie. Luminis heeft drie kernpunten die verankerd zitten in alles wat we doen: het omarmen van nieuwe technologie, meesterschap en kennis delen. Functiebeschrijving First things first! Het is belangrijk

Bekijk vacature »

Als Front-end developer samenwerken met de beste c

Functie Momenteel zijn we voor één van de projecten bij hun key partner, een voorloper in de energiesector, op zoek naar gedreven Front-end developers. Ze nemen de lead in dit project en werken uitsluitend met vooruitstrevende technologieën. Ze verwachten dat de technologie die hier wordt ontwikkeld uiteindelijk door veel meer grote corporates, in verschillende sectoren zal worden toegepast. Dit is dan ook een heel uitdagend project om aan mee te gaan werken. Het team bestaat o.a. uit User Experience designers, Data Scientists en Software Engineers. De consultants en ontwikkelaars werken volgens de Design Thinking methode waarbij de eerste stappen van

Bekijk vacature »

Junior Software Developer (HBO / WO)

Functie omschrijving Wij zijn op zoek naar een Junior Software Developer! Sta jij aan het begin van je carrière en heb je net je HBO of WO-diploma in de richting van ICT of Techniek mogen ontvangen? En heb jij grote affiniteit met software development? Dan hebben wij bij Jelling IT Professionals de perfecte opdrachtgever in de omgeving van Utrecht, die jou tot een volwaardig Fullstack Software Developer gaat opleiden. Binnen deze grote organisatie krijg je ruime en professionele trainingen die jouw in korte tijd vakbekwaam maken. Niet alleen het aan technisch aspect, maar ook zeker jouw persoonlijke ontwikkeling wordt veel

Bekijk vacature »

Software Developer

Functie omschrijving In deze functie ga je aan de slag met het door ontwikkelen van de interne software. Zij maken gebruik van een CRM, wat door de hele organisatie gebruikt wordt. Andere taken: Je gaat het CRM-systeem door middel van PHP verder ontwikkelen; Verder bouw je verschillende API's en koppelingen tussen systemen; Ook ga je collega's ondersteunen bij vragen over de software en applicaties; Deelnemen aan overleggen met het development team; Bij interesse is er de mogelijkheid om junioren te gaan begeleiden. Bedrijfsprofiel Dit bedrijf is actief binnen de telecombranche. Het hoofdkantoor zit in regio van Den Bosch en er

Bekijk vacature »

Delphi developer

Functie Als Delphi developer ga jij aan de slag in een team met twee andere ervaren Delphi programmeurs waaronder de Hoofd programmeur. Als team zijn jullie verantwoordelijk voor de doorontwikkeling van jullie bestaande applicatie. Daarnaast zijn jullie verantwoordelijk voor het onderhouden van deze applicatie en het oplossen van eventuele bugs. Eisen - HBO werk en denk niveau; - Minimaal één jaar ervaring met Delphi; - Goede beheersing van de Nederlandse taal in woord en geschrift; - Jij bent zelfstandig, maar kan ook in team verband werken. Aanbod - €3000,-- €4000,- op basis van jouw kennis en ervaring; - 8% vakantiegeld;

Bekijk vacature »

Java Developer (Training And Simulation)

Wat jij doet Je zou onze Java Developer zijn en nauw samenwerken met je Product Owner, Software System Engineer, Scrum Master en andere Developers. Samen draag je bij aan een multidisciplinair en zelf organiserend Agile team. De rol is zeer afwisselend en bestaat uit, maar is zeker niet beperkt tot: de-risk en prototype onbewezen simulatietechnologieën; simulatiekaders ontwikkelen voor gebruik door andere teams; je bent goed in het begrijpen van ingewikkelde ideeën; heeft de mogelijkheid om nauw samen te werken met grote internationale klanten, leveranciers en overheden om onze oplossingen, vastleggingsvereisten, enz. te definiëren en te presenteren. Ben jij het? Wij

Bekijk vacature »

Senior .NET Developer I goed salaris en deels thui

Bedrijfsomschrijving Mijn opdrachtgever is al ruim 20 jaar een gevestigde naam in de wereld van software ontwikkeling, met drie kantoren in de Randstad, waaronder Alphen aan den Rijn. Zij richten zich op het bouwen van IT-oplossingen die ervoor zorgen dat de productiviteit van klanten te allen tijden optimaal is. Hiervoor neemt jouw nieuwe werkgever het volledige ontwikkelproces tot haar rekening; van het eerste gesprek om de klantwensen in kaart te brengen, tot aan het uiteindelijke onderhoud van de opgeleverde oplossing. In totaal werken er inmiddels bijna 200 gemotiveerde IT-ers binnen deze organisatie. De gemiddelde leeftijd ligt rond de 35. Het

Bekijk vacature »

Traineeship Java Developer

Functie Wat ga je doen als Java Developer? Jij start via ons bij deze opdrachtgever als Trainee Java ontwikkelaar, tijdens het traineeship ga je in 1 jaar van de basis naar professioneel Java ontwikkelaar. Je start samen met een groep trainees, volgt de aangeboden cursussen en gaat aan de slag bij één van onze opdrachtgevers. Na een aantal maanden volgt de volgende opdracht. Door de groei in jouw rol kom je op steeds complexere opdrachten terecht. Veel afwisseling dus. Collega’s met ervaring helpen je bij deze groei en samen met jouw coach ga je een persoonlijke leerplan opzetten om jou

Bekijk vacature »

Java Developer bij een jonge groeiende organisatie

Bedrijfsomschrijving Vind jij het als Java developer ook zo belangrijk dat een bedrijf je de ruimte en tijd geeft voor persoonlijke ontwikkeling? Dan zit je hier helemaal goed. Deze jonge organisatie is opgericht in 2018 en is ondertussen uitgegroeid tot een club van ongeveer 30 medewerkers. Het gaat hier om een echte Java club, die vrijheid en verantwoordelijkheid erg belangrijk vinden. Het bedrijf heeft een informele sfeer en de teams zijn erg hecht met elkaar. Ze delen graag de kennis en ervaringen met anderen, maar vinden andermans mening ook zeer belangrijk. De organisatie zet zich in voor ontwikkeling en besteed

Bekijk vacature »

Java Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Eindhoven Vacature ID: 12946 Introductie We are looking for a Java Developer! Our client is one of the most innovation companies located within the Netherlands. We provide high quality software in a high-tech and challenging market. Functieomschrijving The department is specialized in creating and developing high quality software for manufacturing automation in a high tech environment. We strive to provide our clients with high quality software and deliver state of the art solutions in a variety of ways. Creating software infrastructure using Java SE / EE Create applications to fine tune manufacturing processes

Bekijk vacature »

Belastingdienst - Freelance Applicatieontwikkelaar

Startdatum: 01.06.2023 Richttarief: €65,00 - €75,00 Duur van de opdracht: 6 maanden Uren per week: 36 Taal: Nederlands vereist! Gelieve in het Nederlands te solliciteren. Hybride. Kantoordagen in Utrecht, incidenteel in Apeldoorn Functieomschrijving: De afdeling IV – Generieke Voorzieningen – Interactie Online is onderdeel van de keten Interactie. De missie van de keten is: “het faciliteren van de interactie met alle burgers, bedrijven en hun vertegenwoordigers om hen in staat te stellen aan hun fiscale verplichtingen te voldoen en aanspraak te maken op hun rechten.” De afdeling Interactie Online heeft een belangrijke bijdrage binnen deze keten. Dit door het ontwikkelen

Bekijk vacature »

Junior Software Developer

Functie omschrijving Wij zijn op zoek naar een Junior Software Developer .NET, C# voor een gaaf bedrijf in de omgeving van Utrecht! Sta jij aan het begin van je carrière en heb je net je HBO of WO-diploma in de richting van ICT of Techniek mogen ontvangen? En heb jij grote affiniteit met software development? Lees dan snel verder! Voor een opdrachtgever in de omgeving van Utrecht, zijn wij op zoek naar een Junior Software Developer. Werk jij graag aan verschillende projecten en ga je graag klanten op bezoek? Dan is dit de ideale functie voor jou! Binnen deze functie

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

06/11/2024 02:54:34
 
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.