Cât de deschisă este o culoare?

Mi s-a întâmplat de foarte multe ori să fie nevoie de un color picker într-o pagină care să ajusteze automat și culoarea textului, păstrând – cât de cât – un contrast. Poți face următoarea treabă în orice limbaj, fie că-i web sau nu. Este important să împarți culoarea în părțile de bază: roșu (R), verde (G) și albastru (B).

Dacă suma celor trei culori este sub 382 (teoretic; în practică am observat că e mai bine să se crească până pe la 400-450), culoarea este una întunecată. Dacă suma este peste 382, evident, este o culoare deschisă.

În PHP, de exemplu, poți extrage un array al celor trei culori de bază folosind funcția următoare:

<?php 
function get_rgb( $color = '000000' ){
  $rgb = array();

  for ( $x = 0; $x < 3; $x++ ){
    $rgb[$x] = hexdec( substr( $color, ( 2*$x ), 2 ) );
  }

  return $rgb;
}

Cum le aduni? Foarte simplu! array_sum( get_rgb( $color ) ).

Așa cum am zis, funcția e atât de simplă încât poate fi extinsă cu ușurință în orice limbaj.

2 Comentarii to “Cât de deschisă este o culoare?”

  1. Staicu Ionuț-Bogdan

    Hmmm.. Îl citesc, doar că sunt bătrân și uit chestii :D

    Adevărul e că am pescuit funcția asta de undeva și nu știam de unde. Aparent de la tine :D

Show trackbacks

Ți-a plăcut articolul? Lasă un comentariu!

You can insert code snippets using BBcode:
[js].[/js] [html].[/html] [php].[/php] [css].[/css]
You can also use some HTML tags:
<blockquote>.</blockquote> <code>.</code> <a href="">.</a> <strong>.</strong> <em>.</em>