login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > GD library > Wolken status

Wolken status

Auteur: Tumbler - 05 maart 2007 - 19:54 - Gekeurd door: Joel - Hits: 4098 - Aantal punten: 4.25 (2 stemmen)



Met dit script kun je aan de hand van een foto (+- 160 x 100 pixels) een status opmaken van de wolken (lichtbewolkt, helder...)

Plaats een foto in een images-map.
Het script zet deze foto om in een 4bits kleuren foto (grijs) en berekent het aantal keer dat een bepaalde grijswaarde voorkomt in die foto.
Aan de range van die 16 grijswaardes kun je dan zien of het al dan niet bewolkt is.

Code:
  1. <?php
  2. $img = "images/caption_1.gif"; //foto ophalen
  3. $imgHand = ImageCreateFromGIF($img); // handle voor foto
  4. $imgSize = GetImageSize($img); // foto grootte
  5. $imgWidth = $imgSize[0]; // breedte en hoogte
  6. $imgHeight = $imgSize[1];
  7. //echo '<img src="'.$img.'"><br><br>';
  8. // foto vergroot weergeven (met tabel)
  9. echo '<table cellspacing=0 cellpadding=0>';
  10. for ($l = 0; $l < $imgHeight; $l++) {
  11. echo '<tr>';
  12. for ($c = 0; $c < $imgWidth; $c++) {
  13. $pxlCor = ImageColorAt($imgHand,$c,$l); // pixelkleur ophalen
  14. $pxlCorArr = ImageColorsForIndex($imgHand, $pxlCor);
  15. // kleuren omzetten naar 16 grijswaarden
  16. $htmlCor = DecHex($pxlCorArr["red"]&240) . DecHex($pxlCorArr["red"]&240) . DecHex($pxlCorArr["red"]&240);
  17. // teller bijhouden voor elke grijswaarde
  18. $grey[convert($htmlCor)/16]++;
  19. // tabel cell met als kleur de berekende grijswaarde
  20. echo '<td bgcolor="#'.$htmlCor.'" width="3px" height="3px"></td>';
  21. }
  22. echo '</tr>';
  23. }
  24. echo '</table><br>';
  25.  
  26. // alle grijswaarden laten zien, van donker naar licht
  27. for ($i=0;$i<16;$i++){
  28. echo 'grijswaarde '.$i.' : '.$grey[$i].'<br>';
  29. }
  30. echo '<br><br>Status: <b>'.status(count($grey)).'</b><br>';
  31. // functies
  32. function convert($color){
  33. $hexdec=HexDec($color)&240; // kleur omzetten naar hexadecimale waarden (4bits)
  34. $decbin=DecBin($hexdec); // omzetten naar binair
  35. $decbin = substr("00000000",0,8 - strlen($decbin)) . $decbin; // verloopnullen bijvoegen tot 8bit
  36. $bindec = BinDec($decbin); // terug omzetten naar decimale waarde
  37. return $bindec; // nu hebben we een getal (grijswaarde) tussen 0 en 15
  38. }
  39.  
  40. // status
  41. function status($range){
  42. if ($range >= 13) return "zwaar bewolkt";
  43. elseif ($range > 9 && $range < 13) return "bewolkt";
  44. elseif ($range > 4 && $range <=9) return "licht bewolkt";
  45. elseif ($range <= 4) return "helder";
  46. }
  47. ?>
Download code! Download code (.txt)

Download dit script! Bekijk een voorbeeld van dit script!
 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Lees de reacties (10)
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.023s