Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Konwersja "nazwanego koloru" na kolor rgb.
klapaucius
post
Post #1





Grupa: Zarejestrowani
Postów: 223
Pomógł: 3
Dołączył: 4.07.2009
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Mam mniej więcej taki formularz z wyborem koloru:
  1. <select size='1' name='kolor'>
  2. <option value='wybierz'>-Wybierz-</option>
  3. <option value='black'>Czarny</option>
  4. <option value='green'>Zielony</option>
  5. <option value='gray'>Szary</option>
  6. <option value='red'>Czerwony</option>
  7. <option value='yellow'>Żółty</option>
  8. <option value='blue'>Niebieski</option>
  9. <option value='violet'>Fioletowy</option>
  10. <option value='white'>Biały</option>
  11. </select>


I jak widzimy przy każdym kolorze jest jakaś wartość (black, green itd).

Jak jednak wykorzystać dane z tego formularza przy wywołaniu przykładowej funkcji imagecolorallocate($obrazek, 255, 255, 255);? Jak widzimy, należy w niej użyć koloru w formacie RGB.
Czy jedynym sposobem jest napisanie kodu za pomoca instrukcji warunkowych, coś w stylu:
  1. if($_POST['kolor'] == 'black'){
  2. $r = 0;
  3. $g = 0
  4. $b = 0;
  5. }
  6. if($_POST['kolor'] == 'green'){
  7. $r = 53; //oczywiscie sa to przykladowe liczby
  8. $g = 76;
  9. $b = 42;
  10. }
  11. imagecolorallocate($obrazek, $r, $g, $b)

Czy może jest jakiś prostszy, bardziej optymalny sposób?
P.S.
Wszystkim wesołych świąt życzę (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
ciekawskiii
post
Post #2





Grupa: Zarejestrowani
Postów: 467
Pomógł: 39
Dołączył: 7.11.2010
Skąd: Raz tu, raz tam

Ostrzeżenie: (30%)
XX---


ja bym zrobil tak, w value 1,2 itd.
  1. $tablica=array(1=>'0,0,0', 2=>'255,255,255');

i wtedy nie dajesz tylu warunkow tylko odrazu masz gotowe kolory w $tablica[1] $tablica[2] itd.
Go to the top of the page
+Quote Post
klapaucius
post
Post #3





Grupa: Zarejestrowani
Postów: 223
Pomógł: 3
Dołączył: 4.07.2009
Skąd: Kraków

Ostrzeżenie: (0%)
-----


ale wtedy musiałbym użyć tej tablicy w taki sposób?:
  1. $tablica=array(1=>'0,0,0');
  2. imagecolorallocate($obrazek, $tablica[1]);

Ale tak jest chyba nieprawidłowo....

Ten post edytował klapaucius 24.12.2011, 21:16:40
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Nie ma innej metody niż zdefiniowanie listy kolorów i odpowiadających im wartościom RGB. Nie wiem też czemu przejmujesz się optymalnością przy kodzie mającym ustawić wartości trzech zmiennych, który na 100% nie będzie wąskim gardłem aplikacji.
  1. function colorToRGB($color) {
  2. switch ($color) {
  3. case 'red': return array(255, 0, 0);
  4. case 'blue': return array(0, 0, 255);
  5. case 'yellow': return array(123, 12, 31);
  6. }
  7.  
  8. // czy tam w formie tablicy dwuwymiarowej... bez znaczenia
  9.  
  10. throw new InvalidArgumentException('Invalid color name');
  11. }
  12.  
  13. list($r, $g, $b) = colorToRGB('red');


Ten post edytował Crozin 24.12.2011, 21:24:52
Go to the top of the page
+Quote Post
klapaucius
post
Post #5





Grupa: Zarejestrowani
Postów: 223
Pomógł: 3
Dołączył: 4.07.2009
Skąd: Kraków

Ostrzeżenie: (0%)
-----


ok. zrobiłem tak jak napisałeś i wszystko działa. Dziękuję !
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 17:57