login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > Handige scripts > Websafe kleurenkiezer Class

Websafe kleurenkiezer Class

Auteur: JBke - 06 juni 2007 - 02:00 - Gekeurd door: Ibrahim - Hits: 2406 - Aantal punten: (0 stemmen)




ik was met een script bezig voor buttons aan te maken met GD-Library, nu was het probleem dat GD met R, G, B kleuren werkt en in css de HEX kleurstandaard word gebruikt.

Voorbeeld van script waar ik het voor gebruik: http://www.jb-web.net/scripts/php/GD

De class omvat 2 kleurenkiezers, 1 in een Select Dropdown vorm en 1 met radio select.

In de kleurenkiezers worden enkel de websafe kleuren weergegeven. Al kan je de functies hex_to_rgb() en rgb_to_hex() ook gebruiken voor andere kleuren.

Deze Class vooral om ineens op eenvoudige wijze de HEX naar RGB om te zetten, dat was de bedoeling om gemakkelijk met GD te kunnen samenwerken, komt er als een mooie array uit hex(FFFFFF)->rgb geeft array($r, $b, $g); en andersom rgb($r,$g,$b) met comma's voor GD ->hex geeft var FFFFFF;

Ik vond het handig dat je niet steeds voor je script zelf moet omzetten van HEX naar RGB en heb daar ineens een volledige kleurenkiezer rond gemaakt

Opmerkingen en voorstellen voor uitbreiding steeds welkom, ik heb wel speciaal geen javascript gebruikt vandaar de keuze van de kleurenkiezers.

Hopelijk heb je er wat aan.

Code:
class.color_function.php:

  1. <?
  2. /************************************************************************************
  3. * *
  4. * GEBRUIK VAN DE CLASS: *
  5. * *
  6. * voor een kleurenkiezer: *
  7. * $colorpicker = new color_function("waarde", "titel"); *
  8. * *
  9. * $colorpicker->print_select(); *
  10. * zal een selectbox voor kleurenselectie weergeven *
  11. * $colorpicker->print_radio(); *
  12. * zal lijst met radio buttons voor kleurenselectie weergeven *
  13. * *
  14. * *
  15. * voor omzetting RGB->HEX | HEX -> RGB *
  16. * $var = new color_function("waarde"); *
  17. * $array->rgb_to_hex(); *
  18. * zal een array teruggeven met 3 waardes zijnde R, G en B *
  19. * $var->hex_to_rgb(); *
  20. * zal een variabele teruggeven met de hexadecimale waarde in uppercase. *
  21. * *
  22. *************************************************************************************/
  23.  
  24. class color_function{
  25. var $value;
  26. var $title;
  27.  
  28. function color_function($value = "", $title = "select color..."){
  29. $this->value = $value;
  30. $this->title = $title;
  31. }
  32.  
  33.  
  34. function print_radio(){
  35. $hex_websafe = array("00", 33, 66, 99, "CC", "FF");
  36. echo $this->title . '<br />';
  37. echo '<table>';
  38. foreach ($hex_websafe as $rHex) {
  39. $textcolor = "#FFFFFF";
  40. foreach ($hex_websafe as $gHex) {
  41. if ($gHex == 99) $textcolor = "#000000";
  42. foreach ($hex_websafe as $bHex) {
  43. $color = $rHex.$gHex.$bHex;
  44. echo '<td style="background-color:#' . $color . '; color: ' . $textcolor . '">';
  45. echo '<input type="radio" name="' . $this->value . '" value="' . $color . '" />&nbsp;#' . $color;
  46. echo '</td>';
  47. }
  48. echo '</tr>';
  49. }
  50. }
  51. echo '</table>';
  52. echo '<br />';
  53. }
  54. function print_select(){
  55. $hex_websafe = array("00", 33, 66, 99, "CC", "FF");
  56. echo '<select name="' . $this->value . '">';
  57. echo '<option value="">' . $this->title . '</option>';
  58. foreach ($hex_websafe as $rHex) {
  59. $textcolor = "#FFFFFF";
  60. foreach ($hex_websafe as $gHex) {
  61. if ($gHex == 99) $textcolor = "#000000";
  62. foreach ($hex_websafe as $bHex) {
  63. $color = $rHex.$gHex.$bHex;
  64. echo '<option value="' . $color . '" style="background-color:#' . $color . '; color: ' . $textcolor . '">#' . $color . '</option>';
  65. }
  66. }
  67. }
  68. echo '</select>';
  69. }
  70. function hex_to_rgb(){
  71. $arr_Alf_to_Num = array("A" => 10, "B" => 11, "C" => 12, "D" => 13, "E" => 14, "F" => 15);
  72.  
  73. $color_arr = str_split($this->value, 1);
  74. for ($i = 0; $i <= 5; $i = $i+2) {
  75. $va = $color_arr[$i];
  76. $vb = $color_arr[$i+1];
  77. if (! is_numeric($va)) {
  78. $va = $arr_Alf_to_Num[$va];
  79. }
  80. if (! is_numeric($vb)) {
  81. $vb = $arr_Alf_to_Num[$vb];
  82. }
  83. $arr_RGB[$i] = ($va * 16) + $vb;
  84.  
  85. }
  86. return array_values($arr_RGB);
  87. }
  88. function rgb_to_hex(){
  89. $color_arr = explode(',', $this->value);
  90. for ($i = 0; $i <= 2; $i++) {
  91. $arr_HEX[$i] = dechex($color_arr[$i]);
  92. if ($arr_HEX[$i] == "0") $arr_HEX[$i] = "00";
  93. }
  94. return strtoupper(implode($arr_HEX));
  95. }
  96. }
  97. ?>



voorbeeld van gebruik zoals het online voorbeeld:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  5. <title>Untitled Document</title>
  6. <?php
  7. include('class.color_function.php');
  8. ?>
  9. </head>
  10.  
  11. <body>
  12. <form action="test.php" method="post">
  13. <h2>Kleurenkiezer met Radio:</h2>
  14. <div style="height: 375px; width: 610px; overflow: auto;">
  15. <?php
  16. $kleur_radio = new color_function("bgcolor", "Selecteer Achtergrondkleur");
  17. $kleur_radio->print_radio();
  18. ?>
  19. </div>
  20. <br />
  21. <h2>Kleurenkiezer met Dropdown Select:</h2>
  22. <?php
  23. $kleur_select = new color_function("bgcolor");
  24. $kleur_select->print_select();
  25. ?>
  26. <input type="submit" name="submit" value="Submit" />
  27. </form>
  28.  
  29.  
  30.  
  31. <?php
  32. if ($_SERVER['REQUEST_METHOD'] == "POST") {
  33. $rgb = new color_function($_POST['bgcolor']);
  34. list($r, $g, $b) = $rgb->hex_to_rgb();
  35.  
  36. $hex = new color_function($r . ',' . $g .',' .$b);
  37. $hex = $hex->rgb_to_hex();
  38.  
  39. echo "De gekozen kleur in HEX: #" . $hex . "<br />";
  40. echo "De gekozen kleur in RGB: " . $r . ", " . $g . ", " .$b;
  41. }
  42. ?>
  43. </body>
  44. </html>
Download code! Download code (.txt)

 Bekijk een voorbeeld van dit script!
 Stemmen
Niet ingelogd.

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