Avatar billede elskermad.dk Nybegynder
24. april 2004 - 11:24 Der er 10 kommentarer og
1 løsning

php function som kan gøre hex-farver mørkere eller lysere

hej eksperter :)

jeg har brug for en function som kan gøre noget jeg ikke lige kan gennemskue...

jeg har brug for at den skal kunne udspytte en variable hvor inputtet enten er blevet mørkere eller lysere alt efter hvad man har brug for!

håber der er nogen der ved hvordan dette kan gøres...

- på forhånd mange tak :)
Avatar billede jakoba Nybegynder
24. april 2004 - 11:54 #1
Det du beder om er nok nemmest med CMYK farvekoder, men det kan da også gøres med RGB farvekoder.

Ihvertfald skal du først og freemest hitte ud af hvordan de farver du arbejder med er kodet.
Avatar billede jakoba Nybegynder
24. april 2004 - 11:57 #2
Avatar billede elskermad.dk Nybegynder
24. april 2004 - 12:08 #3
hehe det forstod jeg ikke ret meget af...

ved kun at jeg bruger hex-koder #000000 er sort osv! også skal den selv kunne finde en farve som enten er mørkere (self lidt svært med sort) eller lysere (999999)

også skal den kunne det med alle farve ikke kun sort og andre websikre farver!
Avatar billede dennismp Nybegynder
24. april 2004 - 12:29 #4
function incColor($color) {
    $red = hexdec(substr($color,0,2));
    $green = hexdec(substr($color,2,2));
    $blue = hexdec(substr($color,4));

    if( $red < 255 ) $red++;
    if( $green < 255 ) $green++;
    if( $blue < 255 ) $blue++;
    return sprintf("%02s%02s%02s", dechex($red), dechex($green), dechex($blue) );
}

function decColor($color) {
    $red = hexdec(substr($color,0,2));
    $green = hexdec(substr($color,2,2));
    $blue = hexdec(substr($color,4));

    if( $red > 0 ) $red--;
    if( $green > 0 ) $green--;
    if( $blue > 0 ) $blue--;

    return sprintf("%02s%02s%02s", dechex($red), dechex($green), dechex($blue) );
}
Avatar billede dennismp Nybegynder
24. april 2004 - 12:30 #5
fx
print "Højere: " . incColor('0a0a0a') . '<br>';
print "Lavere: " . decColor('0a0a0a') . '<br>';
Avatar billede jakoba Nybegynder
24. april 2004 - 12:39 #6
Og det illustrerer så også fint risikoen ved at lave den slags mørkning og lysning med RGB koder. du risikerer at du kommer tilbage til en anden farvenuance hvis du kalder 30 gange incColor og derefter 30 gange decColor.
Avatar billede elskermad.dk Nybegynder
24. april 2004 - 15:32 #7
ehmn farven bliver ikke lavet om:
www.demoshop.shop.alnet.dk/farvetest.php

kode:
<?

function incColor($color) {
    $red = hexdec(substr($color,0,2));
    $green = hexdec(substr($color,2,2));
    $blue = hexdec(substr($color,4));

    if( $red < 255 ) $red++;
    if( $green < 255 ) $green++;
    if( $blue < 255 ) $blue++;
    return sprintf("%02s%02s%02s", dechex($red), dechex($green), dechex($blue) );
}

function decColor($color) {
    $red = hexdec(substr($color,0,2));
    $green = hexdec(substr($color,2,2));
    $blue = hexdec(substr($color,4));

    if( $red > 0 ) $red--;
    if( $green > 0 ) $green--;
    if( $blue > 0 ) $blue--;

    return sprintf("%02s%02s%02s", dechex($red), dechex($green), dechex($blue) );
}


$farve = "E1E1B7";

$mork = incColor('E1E1B7');
$lys = decColor('E1E1B7');


echo"
<div style='background-color:#$farve;width:100px;height:100px'>farve</div>
<br>
<div style='background-color:#$mork;width:100px;height:100px'>mørkere</div>
<br>
<div style='background-color:#$lys;width:100px;height:100px'>lysere</div>
<br>
";

?>
Avatar billede elskermad.dk Nybegynder
24. april 2004 - 15:32 #8
.. eller hvert fald ikke nok!
Avatar billede elskermad.dk Nybegynder
24. april 2004 - 15:38 #9
er dette en brugbar måde at gøre mere forskel, eller er der en smartere måde?

function incColor($color) {
    $red = hexdec(substr($color,0,2));
    $green = hexdec(substr($color,2,2));
    $blue = hexdec(substr($color,4));

    if( $red < 230 ) $red = $red+25; else $red = 255;
    if( $green < 230 ) $green = $green+25; else $green = 255;
    if( $blue < 230 ) $blue = $blue+25; else $blue = 255;
    return sprintf("%02s%02s%02s", dechex($red), dechex($green), dechex($blue) );
}

function decColor($color) {
    $red = hexdec(substr($color,0,2));
    $green = hexdec(substr($color,2,2));
    $blue = hexdec(substr($color,4));

    if( $red > 25 ) $red = $red-25; else $red = 0;
    if( $green > 25 ) $green = $green-25; else $green = 0;
    if( $blue > 25 ) $blue = $blue-25; else $blue = 0;

    return sprintf("%02s%02s%02s", dechex($red), dechex($green), dechex($blue) );
}
Avatar billede elskermad.dk Nybegynder
24. april 2004 - 15:39 #10
.. og hvordan findet man ud af om en farve er mørk eller lys?
Avatar billede dennismp Nybegynder
24. april 2004 - 16:15 #11
Hvornår er en farve lys? Hvornår er den mørk? Det skal jo gøres konkret iforhold til en anden farve - ellers bliver det svært at kode
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester