Invertovanie farieb v PHP

20 příspěvků

Archiv diskusního fóra

Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.

  1. mam taky problem. ak mam kod farby napr. #FF00FF a potrebujem k nej vytvorit opacnu hodnotu, nijako mi to nechce ist... mal som jeden napad cez str_replace, ale to nefunguje... ma niekto ine risenie?
  2. Je to jen teorie, nevím jak se invertují barvy, ale napadlo mě, když jsou to hexa hodnoty, co takhle odečíst je každou od FF a výsledek použít? Jestli kecám, sorry.
  3. nie, musi sa vytvorit uplny opak kazdeho hex znaku farby osobitne. viz. tabulka: 0 > F 1 > E 2 > D 3 > C 4 > B 5 > A 6 > 9 7 > 8 8 > 7 9 > 6 A > 5 B > 4 C > 3 D > 2 E > 1 F > 0 skusal som to cez str_replace anhradit ti znaky podla tej tabulky, ale ak je napr. v kode F tak sa to zmeni na 0 a hned potom sa to zmeni druhym prihazom naspet na F...
  4. to mě nenapadlo naházej ty znaky do proměnných a na každý to použij zvlášť pak je zase spoj (ale to je trochu delší)
  5. http://www.webzdarma.cz/forum/read.php?f=2&i=29413&t=29408
  6. hovorim ti ze str_replace som skusal, ale nemoze to fungovat! vysvetlim ti preco: $cislo = "#12340F"; $new = str_replace("0","F",$cislo); // je 1234FF, ma byt 123FF - ok $new = str_replace("1","E",$new); // je E234FF, ma byt E234FF - ok $new = str_replcae("2","D",$new); // je ED34FF, ma byt ED34FF - ok $new = str_replcae("3","C",$new); // je EDC4FF, ma byt EDC4FF - ok $new = str_replcae("4","B",$new); // je EDCBFF, ma byt EDCBFF - ok $new = str_replcae("5","A",$new); // ok $new = str_replcae("6","9",$new); // ok $new = str_replcae("7","8",$new); // ok $new = str_replcae("8","7",$new); // ok $new = str_replcae("9","6",$new); // ok $new = str_replcae("A","5",$new); // ok $new = str_replcae("B","4",$new); // ok $new = str_replcae("C","3",$new); // ok $new = str_replcae("D","2",$new); // ok $new = str_replcae("E","1",$new); // ok $new = str_replcae("F","0",$new); // je EDCB0F, ma byt EDCBF0 - ! udaje s a znova zmenia... najprv sa zmenilo 0 na F a teraz sa to iste F zmenilo naspet na 0... dufam ze uz chapes moj problem(dufam, ze aj ostatny)... aj keby som tam dal len jeden str_replace a parametrom 1 a 2 by boli polia, tak sa to sprava rovnako...
  7. <?php $puvodni="123456"; for($i=1;$i++;$i=6); { $pole[$i]=substr($puvodni,$i-1,1); switch ($pole[$i]) { case "0" : $pole[$i]=F; break; case "1" : $pole[$i]=E; break; case "2" : $pole[$i]=D; break; case "3" : $pole[$i]=C; break; case "4" : $pole[$i]=B; break; case "5" : $pole[$i]=A; break; case "6" : $pole[$i]=9; break; case "7" : $pole[$i]=8; break; case "8" : $pole[$i]=7; break; case "9" : $pole[$i]=6; break; case "A" : $pole[$i]=5; break; case "B" : $pole[$i]=4; break; case "C" : $pole[$i]=3; break; case "D" : $pole[$i]=2; break; case "E" : $pole[$i]=1; break; case "F" : $pole[$i]=0; break; }; $konecna=$pole[1].$pole[2].$pole[3].$pole[4].$pole[5].$pole[6]; echo $konecna; ?> víte někdo proč to nejde?
  8. viz. moju predchadzajucu spravu...
  9. použil jsem něco jiného, jestli sis všiml
  10. prakticky je to myslim na rovnakom principe...
  11. nee, každý znak se testuje zvlášť a jednou
  12. to substr tam ani netreba davat... stacilo by namiesto toho dat $puvodni[$i]
  13. :) nojo
  14. $puvodni="123456"; $konecna=strtr($puvodni,"123456789ABCDEF","FEDCBA987654321"); echo $konecna; :D
  15. jeee... ze ma to nenapadlo! tearz mi este pls pomozte s tou mojou dasou temou (ako zistit tu velkost html kodu :)
  16. delate to moc slozite. Jeste jste nikdy neslyseli o operatoru XOR ?
  17. slyšeli, ale číslicovka mi nikdy moc nešla, to se strtr mi přijde dostačující
  18. No, #FF00FF; je zapis kde se barva sklada ze tri slozek a sice cervene zelene modre oboji v intervalu 00-FF inverzi dosahnes tak, ze otocis hodnoty jednotlivych slozek. Treba: $barva = "#FF00FF"; $match = array(); preg_match('/#([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})/', $barva, $match); $r = "0x".$match[1]; $g = "0x".$match[2]; $b = "0x".$match[3]; $ir = str_pad(dechex(0xFF - $r), 2, '0', STR_PAD_LEFT); $ig = str_pad(dechex(0xFF - $g), 2, '0', STR_PAD_LEFT); $ib = str_pad(dechex(0xFF - $b), 2, '0', STR_PAD_LEFT); $inverze = strtoupper("#".$ir.$ig.$ib); echo "puvodni $barva<br/>\n"; echo "inverzni $inverze<br/>\n"; -- mozna vymyslite neco elegantnejsiho.
  19. mzm >> ten sposb od daneela funguje a je to kratsie ;)
  20. a kupodivu to funguje i tim strtr(); :-)

← Zpět na všechna témata