DevProTalk

Forumi IT profesionalaca
web development, web design, e-business, SEO


Idite nazad   DevProTalk > Web development i web aplikacije > (X)HTML, JavaScript, DHTML, XML, CSS
Želite da se reklamirate ekskluzivno na ovoj poziciji? Javite se

(X)HTML, JavaScript, DHTML, XML, CSS Client scripting tehnologije, Dynamic HTML, Cascading Stylesheets, XML i standardi

Odgovori
 
Alati teme Način prikaza
Staro 26. 01. 2006.   #1
mega023
član
Certified
 
Avatar mega023
 
Datum učlanjenja: 05.11.2005
Poruke: 82
Hvala: 7
1 "Hvala" u 1 poruci
mega023 is on a distinguished road
Default JavaScript & izračunavanje inverzne boje

Problem je sledeci...
imam neku boju npr.

boja = "#FFFFFF";

hocu da izracunam kontrasnu boju (invertovanu)

u ovom slucaju to je #000000

kako da to izvedem za bilo koju boju?
ima li ko ideju?
mega023 je offline   Odgovorite uz citat
Staro 26. 01. 2006.   #2
Petar Marić
Python Ambassador
Master
 
Avatar Petar Marić
 
Datum učlanjenja: 06.06.2005
Lokacija: Novi Sad
Poruke: 602
Hvala: 28
27 "Hvala" u 17 poruka
Petar Marić će postati "faca" uskoro
Pošaljite ICQ poruku za Petar Marić
Default

Ako želiš invertovanu boju to se svodi na
Kôd:
kontrastna_boja = not boja; //pseudo kod
ili
Kôd:
kontrastna_boja = 0xFFFFFF - boja; //pseudo kod
Mada mislim da to nije preterano pametno jer što je boja bliža "sredini" (npr #777777 ili #888888) dobijaš efektivno manji kontrast.
__________________
Python Ambassador of Serbia
Petar Marić je offline   Odgovorite uz citat
Staro 26. 01. 2006.   #3
mega023
član
Certified
 
Avatar mega023
 
Datum učlanjenja: 05.11.2005
Poruke: 82
Hvala: 7
1 "Hvala" u 1 poruci
mega023 is on a distinguished road
Default

doduse nasao sam 3 PHP verzije koda...
ako neko zna da "prevede" na JavaScript bio bih mu veoma zahvalan
posto nesto nisam vican JS-u

hvala u napred
PHP kôd:
*** CODE 1 ***
<?
// precond: $color is a hex integer
// postcond: returns inversion
function InvertColor($color)
{
  return (int) 
0xffffff $color;
}
?>

*** CODE 2 ***
<?php
function InvertColor($hex)
{
  return 
sprintf("%06X"$hex 0xFFFFFF);
}
?>
PHP kôd:
*** CODE 3 ***
function 
inverseColor($hex) {
   if(
substr($hex01) == '#'$hex substr($hex1);
  
   
$r str_pad(dechex(255 hexdec(substr($hex02)) ),2,'0',STR_PAD_LEFT);
   
$g str_pad(dechex(255 hexdec(substr($hex22)) ),2,'0',STR_PAD_LEFT);
   
$b str_pad(dechex(255 hexdec(substr($hex42)) ),2,'0',STR_PAD_LEFT);

   return 
strtoupper('#'.$r.$g.$b);   


Poslednja izmena od nixa : 26. 01. 2006. u 03:01.
mega023 je offline   Odgovorite uz citat
Staro 26. 01. 2006.   #4
mega023
član
Certified
 
Avatar mega023
 
Datum učlanjenja: 05.11.2005
Poruke: 82
Hvala: 7
1 "Hvala" u 1 poruci
mega023 is on a distinguished road
Default

Citat:
Originalno napisao Petar Marić
Ako želiš invertovanu boju to se svodi na
Kôd:
kontrastna_boja = not boja; //pseudo kod
ili
Kôd:
kontrastna_boja = 0xFFFFFF - boja; //pseudo kod
Mada mislim da to nije preterano pametno jer što je boja bliža "sredini" (npr #777777 ili #888888) dobijaš efektivno manji kontrast.

probao sam i

Kôd:
x = #FF00FF;
y = ~x;
kao i

Kôd:
x = #FF00FF;
y = 0xFFFFFF - x;
u oba slucaja dobijam neke nebulozne rezultate...
sto se tacnosti tice ne mora da bude nesto preterano tacno...

x = #FF00FF <-- ovo mi je vec zadato u ovom obliku (umesto u 0xFF00FF)
mega023 je offline   Odgovorite uz citat
Staro 26. 01. 2006.   #5
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

cek, cek, pa ne mozes da sabiras babe i zabe...#nesto je string, a tebi treba HEX broj koji to predstavlja:

Kôd:
boja = '#FF0000'; // crvena
boja_hex = ('0x'+ boja.substr(1) ) *1; //konvertujes u hex broj
kontrast_hex = 0xFFFFFF - boja_hex;  // nadjes hex vrednost kontrastne boje
kontrast_boja = kontrast_hex.toString(16); // konvertujes u string
dobijenom stringu fale nule s leve strane, treba jos da napises funkciju koja proveri duzinu stringa i doda potreban broj nula sa leve strane da bude 6 cifara i onda doda i tarabu ispred....

EDIT: bilo je par gresaka oko imena promenjivih, pa sam to popravio
__________________
Leadership is the art of getting people to want to do what you know must be done.

Poslednja izmena od ivanhoe : 26. 01. 2006. u 21:38.
ivanhoe je offline   Odgovorite uz citat
Staro 26. 01. 2006.   #6
Pedja
Predrag Supurović
Grand Master
 
Datum učlanjenja: 24.01.2006
Lokacija: Užice
Poruke: 791
Hvala: 3
200 "Hvala" u 12 poruka
Pedja is on a distinguished roadPedja is on a distinguished roadPedja is on a distinguished road
Default

Kontrastne boje su one koje su medjusobno najudaljenije na krugu boja. Obican invert RGB kodova sumnjam da mze da da koristan rezultat.
Pedja je offline   Odgovorite uz citat
Staro 26. 01. 2006.   #7
bluesman
Goran Pilipović
Sir Write-a-Lot
 
Avatar bluesman
 
Datum učlanjenja: 18.05.2005
Lokacija: Beograd
Poruke: 5.450
Hvala: 288
1.247 "Hvala" u 446 poruka
bluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušati
Pošaljite ICQ poruku za bluesman
Default

Mislim da je peđa u pravu, formula nikako ne može biti tako jednostavna. Recimo, kontrasne boje su Crvena FF0000 i zelena 00FF00. Plava 0000FF i žuta FFFF00. Mora da postoji neka druga formula, ako uopšte i postoji.
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman
I don't always know what I'm talking about but I know I'm right!
bluesman je offline   Odgovorite uz citat
Staro 26. 01. 2006.   #8
mega023
član
Certified
 
Avatar mega023
 
Datum učlanjenja: 05.11.2005
Poruke: 82
Hvala: 7
1 "Hvala" u 1 poruci
mega023 is on a distinguished road
Default

Citat:
Originalno napisao ivanhoe
cek, cek, pa ne mozes da sabiras babe i zabe...#nesto je string, a tebi treba HEX broj koji to predstavlja:

Kôd:
boja = '#FF0000'; // crvena
boja_hex = ('0x'+ a.substr(1) ) *1; //konvertujes u hex broj
kontrast_hex = 0xFFFFFF - a_hex;  // nadjes hex vrednost kontrastne boje
kontrast_boja = kontrast.toString(16); // konvertujes u string
dobijenom stringu fale nule s leve strane, treba jos da napises funkciju koja proveri duzinu stringa i doda potreban broj nula sa leve strane da bude 6 cifara i onda doda i tarabu ispred....

ima tu kod tebe u kodu malo gresaka, ali kada sam sve ispravio radi zadovoljavajuce

hvala svima na pomoci...
mega023 je offline   Odgovorite uz citat
Staro 26. 01. 2006.   #9
Pedja
Predrag Supurović
Grand Master
 
Datum učlanjenja: 24.01.2006
Lokacija: Užice
Poruke: 791
Hvala: 3
200 "Hvala" u 12 poruka
Pedja is on a distinguished roadPedja is on a distinguished roadPedja is on a distinguished road
Default

http://www.lethalpenguin.net/design/index.php
http://www.ficml.org/jemimap/style/color/index.php

Ovdeima ziv krug boja: http://www.ficml.org/jemimap/style/color/wheel.html i izgleda da se stvarno komplementarne boje mogu diobiti prostim invertovanjem.

Evo ga algoritam za izracunavanje kontrastne boje.
http://juicystudio.com/services/colourcontrast.php

i sta W3 kaze o tome: http://www.w3.org/TR/AERT#color-contrast

I gomila color picker-a
http://web-graphics.com/mtarchive/000972.php

Poslednja izmena od Pedja : 26. 01. 2006. u 17:30.
Pedja je offline   Odgovorite uz citat
Staro 26. 01. 2006.   #10
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

Jel ima neko dobre formule za pretvaranje iz RGB->HSB sistem i obrnuto?Ono sto ima da se nadje na netu je puno gresaka, i ne radi, tj. daje rezultate drugacije nego photoshop (a cenim da oni znaju kako se to radi

U svakom slucaju 100% korektan nacin da se izracuna kontrastna boja bi bio da se iz RGB izracuna hue, i to u stepenima (hue predstavlja ugao izmedju 0 - 360 ^ na krugu boja) i da se onda na njega doda 180 stepeni, pa da se to sve vrati u rgb...

samo sto nikako da nadjem gore pomenute formule za HSB

@mega_023: e izvini na greskama, kad sam probao, koristio sam promenjive glupih naziva: a i a_hex, pa sam onda kod prekucavanja hteo da im promenim imena da budu deskriptivnija, pa sam se zeznuo usput na par mesta su ostali stari nazivi...sad sam valjda ispravio..
__________________
Leadership is the art of getting people to want to do what you know must be done.
ivanhoe je offline   Odgovorite uz citat
Odgovori


Alati teme
Način prikaza

Pravila pisanja
Možete ne započinjati nove teme
Možete ne slati odgovore
Možete ne slati priloge
Možete ne izmeniti svoje poruke
vB kôd je Uključen
Smajliji su Uključen
[IMG] kod je Uključen
HTML kôd je Isključen
Pogledajte forum

Slične teme
Tema Početna poruka teme Forum Odgovori Poslednja poruka
Javascript ORM kodi (X)HTML, JavaScript, DHTML, XML, CSS 2 10. 07. 2007. 11:17
javascript 3D ivanhoe Opušteno 2 03. 11. 2006. 12:25
UTF8 i JavaScript krcko (X)HTML, JavaScript, DHTML, XML, CSS 1 04. 10. 2006. 11:14
komentar na raspored elemenata, boje... oliver78 Web site, dizajn i multimedia 2 23. 12. 2005. 15:54


Vreme je GMT +2. Trenutno vreme je 23:34.


Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.
Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.