Funkcia pre zmenu formátu farby z #hex na rgb()

Obtiažnosť:
Začiatočník
Pokročilý
Skúsený
Expert

Niekedy je potrebné získať farbu vo formáte rgb(). Rgb je definícia farby pomocou – red green blue, po našom červená zelená a modrá. Rozsah pre jednotlivú farbu je 0 – 255. Pomocou ich kombinácie sa vytvára finálna farba. Farba, definovaná vo formáte #hex (čo je nakoniec tiež iba definícia týchto troch farieb, ale v hexadecimálnom formáte, v rozsahu 00 – ff, pre každú z nich), sá dá pomocou tejto funkcie previesť na rgb() formát.

function hex2rgb( $color ) {
  	// ak farba obsahuje '#' - treba ju odstrániť
	if ( $color[0] == '#' ) {
		$color = substr( $color, 1 );
	}
    // vytvorenie poľa a priradenie k premenným s hodnotami pre každú farbu
	if ( strlen( $color ) == 6 ) {
		list( $r, $g, $b ) = array( $color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5] );
	} elseif ( strlen( $color ) == 3 ) {
		list( $r, $g, $b ) = array( $color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2] );
	} else {
		return false;
	}
  	// prevod z hexadecimálneho formátu na decimálnu hodnotu
	$r = hexdec( $r );
	$g = hexdec( $g );
	$b = hexdec( $b );
  	// vráti pole s hodnotami rgb
	return array( 'red' => $r, 'green' => $g, 'blue' => $b );
}

Funkcia má povinnú jednu premennú $color. Do funkcie sa posiela farba v #hex formáte, napríklad #ff0000 (alebo #f00 – čo je skrátený formát). Funkcia vráti asociované pole: array( 'red' => 255, 'green' => 0, 'blue' => 0 )

Jednoduchou zmenou, sa dá funkcia upraviť, aby vrátila hodnotu s transparentnosťou rgba(). V definícii je jedno číslo navyše, ktoré určuje transparentnosť v rozsaho 0 – 1.

function hex2rgb( $color, $t = 1 ) {
  	// ak farba obsahuje '#' - treba ju odstrániť
	if ( $color[0] == '#' ) {
		$color = substr( $color, 1 );
	}
    // vytvorenie poľa a priradenie k premenným s hodnotami pre každú farbu
	if ( strlen( $color ) == 6 ) {
		list( $r, $g, $b ) = array( $color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5] );
	} elseif ( strlen( $color ) == 3 ) {
		list( $r, $g, $b ) = array( $color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2] );
	} else {
		return false;
	}
  	// prevod z hexadecimálneho formátu na decimálnu hodnotu
	$r = hexdec( $r );
	$g = hexdec( $g );
	$b = hexdec( $b );
  	// vráti pole s hodnotami rgb
	return array( 'red' => $r, 'green' => $g, 'blue' => $b, 'transparent' => $t );
}

Do funkcie je pridaná nepovinná premenná $t (má preddefinovanú hodnotu na 1 – čo je farba bez transparentnosti). Pre danú premennú je teda rozsah 0 – 1 ( napríklad 0.5 je polovičná, 50% transparentnosť).

transparentnosť môže byť zadaná aj ako hodnota 0.01 – čo predstavuje 1%

0 0 votes
Hodnotenie článku
Autor
Navigácia
Odoberať
Upozorniť na
guest
0 Komentáre
Inline Feedbacks
View all comments