Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Gradient - mając 1 kolor
Forum PHP.pl > Forum > PHP
Kazaan
Witam
Nie potrafie sobie poradzic z jednym problemem:
Mam do dyspozycji tylko jeden kolor, potrzebuje drugi do zbudowania gradientu... manipulacja losowa parametrami rgb nie wchodzi w grę, do tego trzeba sprytnego algorytmu, macie jakies rady jak to zrobic ?
krowal
No ale jaki ten drugi kolor ma być, trochę jaśniejszy/ciemniejszy ? a może ma mieć więcej czerwieni ? Wróżko, wróżko prosimy powiedz nam smile.gif
tehaha
raczyłbyś w google wpisać to byś w 1min znalazł - http://planetozh.com/blog/my-projects/imag...-gradient-fill/
Kazaan
Cytat(krowal @ 4.03.2011, 15:35:43 ) *
No ale jaki ten drugi kolor ma być, trochę jaśniejszy/ciemniejszy ? a może ma mieć więcej czerwieni ? Wróżko, wróżko prosimy powiedz nam smile.gif


Jesli suma 'kontrolna' czyli (r+b+g)/3 jest powyzej 127 to nowy kolor powinien byc jasniejszy, jesli ponizej to ciemniejszy. Jesli chodzi o poziom roznicy, ma byc mocno zauwazalny...

Cytat(tehaha @ 4.03.2011, 15:54:13 ) *
raczyłbyś w google wpisać to byś w 1min znalazł - http://planetozh.com/blog/my-projects/imag...-gradient-fill/



Dzieki za link, choc sam potrafie wygenerowac gradient, napisalem wyraznie: mam do dyspozycji tylko jeden kolor i do niego chce dobrac drugi.

dobra znalazlem soluszyn biggrin.gif

dla potomnych:

  1. function doborKoloru($kolor){
  2. $rgb = Hex2RGB(trim($kolor));
  3. $r = $rgb[0];
  4. $g = $rgb[1];
  5. $b = $rgb[2];
  6.  
  7.  
  8. $nr = $r-round($r/1.8);
  9. $ng = $g-round($g/1.8);
  10. $nb = $b-round($b/1.8);
  11.  
  12. }
  13.  
  14. $newColor = rgb2hex($nr, $ng, $nb);
  15.  
  16. return $newColor;
  17. }


tu przyklad dla ciemniejszego koloru startowego, dla jasniejszego nalezy dodac wartosc dzielana przez 1.8
P.S wpadlem na to przesuwajac suwak w ps Color picker biggrin.gif

Jednak przyslowiowa {d}upa

  1. function doborKoloru($kolor){
  2. $rgb = Hex2RGB(trim($kolor));
  3. $r = $rgb[0];
  4. $g = $rgb[1];
  5. $b = $rgb[2];
  6.  
  7. if(($r+$g+$b)/3 < 127){
  8.  
  9. $nr = $r-round($r/1.8);
  10. $ng = $g-round($g/1.8);
  11. $nb = $b-round($b/1.8);
  12.  
  13. }
  14. else{
  15. $nr = $r*1.4; if($nr > 255){$nr = 255; }
  16. $ng = $g*1.4; if($ng > 255){$ng = 255; }
  17. $nb = $b*1.4; if($nb > 255){$nb = 255; }
  18. }
  19.  
  20. $newColor = rgb2hex($nr, $ng, $nb);
  21.  
  22. return $newColor;
  23. }


dla kolorow jasniejszych trzeba zmienic nieco wartosc, optymalnie jest 1.4
mam nadzieje ze sie komus przyda ten dosc 'slaby' ale dzialajacy kod.
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.