Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak uzyskać 256 kolorów
Forum PHP.pl > Forum > PHP
php programmer
Trochę dziwne pytanie: Jak uzyskać 256 kolorów.

Wyjaśniam o co chodzi:

jak zrobię potrójną pętlę
  1. <?php
  2. for ($R=0; $R<=15; $R++)
  3. for ($G=;$G<=15; $G++)
  4. for ($B=;$B<=15; $B++)
  5. $color = '#'.dechex($R).dechex($G).dechex($B);
  6. ?>


To mam aż 16*16*16 = 4096 kolorów
a chciałbym uzyskać tylko 256, oczywiscie równomiernie rozłozone
Kaiba Ziom
Nie wiem czy zrozumiałem ale:
  1. <?php
  2. for ($R=0; $R<=4; $R++)
  3. for ($G=;$G<=4; $G++)
  4. for ($B=;$B<=4; $B++)
  5. for ($D=;$D<=4; $D++)
  6. $color = '#'.dechex($R).dechex($G).dechex($B).dechex($D);
  7. ?>

:roll2:

Jeszcze wymyśliłem takie:
[php]
<?php
for ($R=0; $R<=8; $R++)
for ($G=0 ;$G<=8; $G++)
for ($B=0 ;$B<=4; $B++)
$color = '#'.dechex($R).dechex($G).dechex($B);
?>
Ale to nie równomiernie .
.radex
a co to jest D ?
Kaiba Ziom
Nie wiem :F . PHP dopiero się uczę . Jak umiałem to zrobiłem .
nospor
pasi tak:
  1. <?php
  2. $r = 0; $g = 0; $b = 0;
  3. for ($i=0;$i <= 255;$i++) {
  4. if ($i<51)
  5. $r += 5;
  6. elseif ($i<102){
  7. $r = 255;
  8. $g += 5;
  9. }
  10. elseif ($i<153){
  11. $r -= 5;
  12. $g = 255;
  13. }
  14. elseif ($i<204){
  15. $r = 0;
  16. $g -= 5;
  17. $b += 5;
  18. }
  19. elseif ($i<255){
  20. $r += 5;
  21. $g += 5;
  22. $b = 255;
  23. } else {
  24. $r = 255;
  25. $g = 255;
  26. $b = 255;
  27. }
  28. $color = '#'.sprintf('%02s',dechex($r)).sprintf('%02s',dechex($g)).sprintf('%02s',dechex($b));
  29. echo '<div style="background-color:'.$color.';width:100px;">'.$i. ' - ' .$color.'</div>';
  30. }
  31. ?>

?

Albo tak:
  1. <?php
  2. $r = 0; $g = 0; $b = 0;
  3. for ($i=0;$i <= 255;$i++) {
  4. if ($i<85)
  5. $r += 3;
  6. elseif ($i<170){
  7. $r = 255;
  8. $g += 3;
  9. }
  10. elseif ($i<255){
  11. $r = 255;
  12. $g = 255;
  13. $b += 3;
  14. } else {
  15. $r = 255;
  16. $g = 255;
  17. $b = 255;
  18. }
  19. $color = '#'.sprintf('%02s',dechex($r)).sprintf('%02s',dechex($g)).sprintf('%02s',dechex($b));
  20. echo '<div style="background-color:'.$color.';width:100px;">'.$i. ' - ' .$color.'</div>';
  21. }
  22. ?>

?

Pierwszy wydaje sie ladniejszy winksmiley.jpg

Cytat
Nie wiem :F . PHP dopiero się uczę . Jak umiałem to zrobiłem .
RGB nie ma zwiazku z PHP wiec i D tym bardziej tongue.gif. Na kolorach sie nie znasz i tyle winksmiley.jpg

edit:
i jeszcze cos na Twoj styl:
  1. <?php
  2. $i = 0;
  3. for ($R=0; $R<=7; $R++)
  4. for ($G=;$G<=7; $G++)
  5. for ($B=;$B<=3; $B++){
  6. if ($R == 7 && $G==&& $B==3)
  7. $color = '#fff';
  8. else
  9. $color = '#'.dechex($R*2).dechex($G*2).dechex($B*4);
  10. echo '<div style="background-color:'.$color.';width:100px;">'.$i.' - '.$color.'</div>';
  11. $i++;
  12. }
  13. ?>
php programmer
Genialne...
Chodź widzę kod, nie rozumiem zasady działania.
W jednym zdaniu to na czym polega myk?
bendi
Na tym, że korzystasz z systemu ósemkowego i zamieniasz na 16-tkowy, prawda nospor?

A tak btw czy te zamiany sa faktycznie niezbędne - chodzi mi o ostatnie rozwiazanie, przeciez w stylach mozesz zdefiniowac kolor w ósemkowo także.

Rozwiąznie js'owe
nospor
Cytat
Genialne...
Chodź widzę kod, nie rozumiem zasady działania.
W jednym zdaniu to na czym polega myk?

A o ktorym kodzie mowisz? Bo dwa pierwsze znaczaco roznią sie od trzeciego i nie wiem ktory tlumaczyc winksmiley.jpg

Cytat
Na tym, że korzystasz z systemu ósemkowego i zamieniasz na 16-tkowy, prawda nospor?
Mowisz o ostatnim? W sumie na to prawie wyszlo smile.gif

Cytat
A tak btw czy te zamiany sa faktycznie niezbędne - chodzi mi o ostatnie rozwiazanie, przeciez w stylach mozesz zdefiniowac kolor w ósemkowo także.
Mozna, ale tak z rospedu sie pisalo i tak wyszlo smile.gif
php programmer
Ach to nawet nie zauważyłem tego trzeciego,
dwa pierwsze wydają się podobne,
nospor
Cytat
Rozwiąznie js'owe

@Bendi napstrykales tych kolorow. winksmiley.jpg
Standardem bodajże jest uzywanie tzw. bezpiecznych webowych kolorow, ktorych jest 216:
  1. <?php
  2. function webCol($R){
  3. echo '<table>';
  4. for ($B=255;$B>=;$B-=51)
  5. {
  6. echo '<tr>';
  7. for ($G=255;$G>=;$G-=51)
  8. {
  9. $color = '#'.sprintf('%02s',dechex($R)).sprintf('%02s',dechex($G)).sprintf('%02s',dechex($B));
  10. echo '<td><div style="width:10px;height:10px;background-color:'.$color.'"></div></td>';
  11. }
  12. }
  13. echo '</table>';
  14. }
  15.  
  16. echo '<table><tr><td>';webCol(255);echo '</td>';
  17. echo '<td>';webCol(204);echo '</td>';
  18. echo '<td>';webCol(153);echo '</td></tr>';
  19. echo '<tr><td>';webCol(102);echo '</td>';
  20. echo '<td>';webCol(51);echo '</td>';
  21. echo '<td>';webCol(0);echo '</td></tr></table>';
  22. ?>


@php programmer skoro chodzilo ci o te pierwsze, to jak widac, lece sobie od 0 do 255 i w zaleznosci w jakim zakresie liczbowym jestem to sobie zmieniam RGB smile.gif Oczywiscie zeby taki efekt uzyskac musze plynnie zmieniac te wartosci, bez zadnych skokow

Cytat
dwa pierwsze wydają się podobne,
No tylko sie wydają winksmiley.jpg drugi ma mniejszy zakres kolorow. w pierwszym masz ciut wiecej
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.