Kleurwaarde en veranderen

Het handigste is om je bewerkingen in een functie te stoppen. In het vorige hoofdstuk heb je kunnen zien hoe je elke pixel één voor één afgaat. Op de plek waar stond:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
    // Dan komt hier de bewerking voor de actuele pixel


… zet je dan gewoon je functie + parameters neer en ben je klaar.

Nu ga ik een functie maken, die met de berekeningen van hoofdstuk 2 een afbeelding omzet van kleur naar pure zwart-wit. Ik gebruik daarbij de expressie imagecolorsforindex. Deze expressie lust 2 parameters. De eerste is de afbeelding en de tweede een variabele die je heb gemaakt met de expressie imagecolorat.

array imagecolorsforindex ( resource image, int index )

Let wel op, je moet eerst met de expressie imagecolorat een variabele maken die je als parameter kunt opgeven bij imagecolorsforindex.

int imagecolorat ( resource image, int x, int y )

Dat is wel leuk, nu weet je de kleur van de pixel. Maar je wilt hem veranderen,

toch? Dat doen we met de expressie imagesetpixel. Ook deze expressie lust 4 parameters, en dat zijn dezelfde als imagecolorsforindex. Alleen de vierde is de kleur.

bool imagesetpixel ( resource image, int x, int y, int color )

Zo, nu ben je klaar om een afbeelding om te zetten van kleur naar pure zwart-wit. Ik zal het even voordoen. Eerst maak ik een functie, dan open ik een afbeelding, dan de twee for-loopjes en dan? Dan ga ik de foto opslaan. Op een andere manier dan dat je de afbeelding laat zien.

Afbeelding

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
<?php

require_once('./gd.class.pixel.php');

function
zwartwit($afbeelding, $x, $y) {

  $kleur = imagecolorsforindex($afbeelding, imagecolorat($afbeelding, $x, $y));
  
  $wit   = (255 + 255 + 255);
  $zwart = 0;
  $helft = ($wit / 2);
  
  $waarde = $kleur['red'] + $kleur['green'] + $kleur['red'];
  
  if ($waarde > $helft) {
    
    $wittekleur = imagecolorallocate($afbeelding, 255, 255, 255);
    imagesetpixel($afbeelding, $x, $y, $wittekleur);
  }

  else {
  
    $zwartekleur = imagecolorallocate($afbeelding, 0, 0, 0);
    imagesetpixel($afbeelding, $x, $y, $zwartekleur);
  }
}



$afbeelding = imagecreatefromjpeg('schets.jpg');

for($x = 0; $x < imagesx($afbeelding); $x++) {

  for ($y = 0; $y < imagesy($afbeelding); $y++) {

    zwartwit($afbeelding, $x, $y);
  }
}


header('Content-type: image/png');
imagepng($afbeelding);

imagedestroy();
?>


Afbeelding

Je hebt bij deze bewerking de pixel klasse niet nodig. Je zou hem wel kunne gebruiken, maar daar heb ik even niet aan gedacht :c) Je hebt er nu dus gewoon een mooie klasse bij :D

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Imagefun
  2. RGB: Rood Groen Blauw
  3. Een afbeelding openen
  4. Pixel voor pixel
  5. Kleurwaarde en veranderen

PHP tutorial opties

 
 

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.