Recunoaste PHP-ul ce culori sunt inchise/deschise ?

Ai o întrebare legată de PHP? Incercăm să îi găsim soluţie. Sau poate doar vrei să publici un cod interesant.

Moderatori: Zamolxe, Moderatori

Avatar utilizator
kleampa
Senior Member
Mesaje: 2774
Membru din: Dum Iul 10, 2005 2:12 pm
Localitate: Bucuresti
Contact:

Recunoaste PHP-ul ce culori sunt inchise/deschise ?

Mesajde kleampa » Mie Aug 27, 2008 11:05 pm

Se da o culoare in format #333333
Pot afla fara sa fac un array cu culorile inchise/deschise daca acea culoare are o tenta de inchis sau deschis pentru a putea scrie cu o culoare de tenta opusa in div-ul cu acel background?



bash
Average Member
Mesaje: 51
Membru din: Joi Aug 21, 2008 9:54 pm

Mesajde bash » Joi Aug 28, 2008 12:47 am

Daca le-ar recunoaste inseamna ca ar avea o baza de date cu cele 2 categorii.Oricum e interesant de vazut http://www.softpageinternet.ro/manual_html/Capitole/Anexa%203.htm

De exemplu rosu inchis are codul:rgb(0,0,0) pana la cel mai deschis rgb(255,0,0) ,generalizand pentru rosu:rgb1(x1,0,0),rgbn(xn,0,0) .Intre x1 si xn exista relatia :xn=x1+(n-1)q unde q este ratia progresie aritmetice,in cazul nostru fiind 8
Ultima oară modificat Joi Aug 28, 2008 1:06 am de către bash, modificat de 2 ori în total.

joe_black
Average Member
Mesaje: 51
Membru din: Mie Mai 03, 2006 6:19 pm

Mesajde joe_black » Joi Aug 28, 2008 12:50 am

Interesanta problema;

Uite o idee:
Tonul de mijloc pt fiecare culoare e 0x7F = 127.
Suma valorilor 301 (127+127+127)

daca ai o culoare cu a carei suma RGB iti da mai mica atunci acea culoare este mai inchisa iar suma RGB mai mare, mai deschisa.

asta dupa un pic studiu pe
http://www.drpeterjones.com/colorcalc/

Works for you ?

bash
Average Member
Mesaje: 51
Membru din: Joi Aug 21, 2008 9:54 pm

Mesajde bash » Joi Aug 28, 2008 2:05 am

Culorile pe 24biti se impart astfel :8biti pe rosu,8biti pe verde si 8 biti pe albastru.Acum nr maxim care poate fi scris pe 8 biti este 255,deci vom avea rgb(255,255,255) cea mai aprinsa culoare si rgb(0,0,0) cea mai intunecata.Logic 127 reprezinta nuantele medii ,rgb(127,127,127) nuanta de granita intre inchise si deschise.
Prietene tu ai spus ca afirmatia ta se bazeaza pe observatie ,eu ti-am aratat matematic de ce .

//offtopic Ca sa posteze felina dupa mine de aia.
Ultima oară modificat Joi Aug 28, 2008 9:09 pm de către bash, modificat de 2 ori în total.

joe_black
Average Member
Mesaje: 51
Membru din: Mie Mai 03, 2006 6:19 pm

Mesajde joe_black » Joi Aug 28, 2008 2:37 am

bash scrie:Culorile pe 24biti se impart astfel :8biti pe rosu,8biti pe verde si 8 biti pe albastru.Acum nr maxim care poate fi scris pe 8 biti este 255,deci vom avea rgb(255,255,255) cea mai aprinsa culoare si rgb(0,0,0) cea mai intunecata.Logic 127 reprezinta nuantele medii ,rgb(127,127,127) nuanta de granita intre inchise si deschise.


Si asta e diferit de ce am zis eu prin ce ? Sau nu am fost destul de clar?

Avatar utilizator
mihaitha
Senior Member
Mesaje: 2383
Membru din: Vin Mai 04, 2007 12:40 pm
Localitate: Sibiu
Contact:

Mesajde mihaitha » Joi Aug 28, 2008 4:58 am

joe_black scrie:Si asta e diferit de ce am zis eu prin ce ? Sau nu am fost destul de clar?
Cu nimic, face doar postcount dupa cum s-a obisnuit. Macar de data asta e mai inteligibil.

Avatar utilizator
kleampa
Senior Member
Mesaje: 2774
Membru din: Dum Iul 10, 2005 2:12 pm
Localitate: Bucuresti
Contact:

Mesajde kleampa » Joi Aug 28, 2008 12:59 pm

baieti va multumesc
sfatul cu culoarea medie a fost excelent, singura chestie era ca 127*3 = 381 nu 301 :) probabil greseala de scriere
codul complet mai jos pentru cine vrea sa testeze

Cod: Selectaţi tot

function hex2rgb($color){
    $color = str_replace('#', '', $color);
    if (strlen($color) != 6){ return array(0,0,0); }
    $rgb = array();
    for ($x=0;$x<3;$x++){
        $rgb[$x] = hexdec(substr($color,(2*$x),2));
    }
    return $rgb;
}
//$culoare = '#FFFFFF';
$culoare = '#000000';
$rgb = hex2rgb($culoare);
$total = array_sum($rgb);

if($total <=381) {
   $text_color='white';
}
else {
   $text_color='black';
}

echo'<div style="background:'.$culoare.'; padding:2px;"><span style="color:'.$text_color.';">text</span></div>';


Înapoi la “Cod PHP”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 27 vizitatori