RGB naar HEXA omreken script

Door Matshofman , 20 jaar geleden, 6.072x bekeken

Met dit script is het mogelijk een RGB kleurcode om te rekenen naar een HEXA kleur code.

Je kan alleen getallen van 0 tot 255 invullen anders geeft hij een error, hij laat de omgerekende kleur zien, en hij werkt met elke manier van cijfers (002 of enkel 2 etc.)

Voorbeeld: http://www.cssleren.nl/tools/kleuren.php

Gesponsorde koppelingen

PHP script bestanden

  1. rgb-naar-hexa-omreken-script

 

Er zijn 16 reacties op 'Rgb naar hexa omreken script'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Leroy Boerefijn
Leroy Boerefijn
20 jaar geleden
 
0 +1 -0 -1
Ziet er erg mooi uit!
en beter nog, het werkt goed! (in het voorbeeldje tenminste)
Paul K
Paul K
20 jaar geleden
 
0 +1 -0 -1
Goed en duidelijk script; alleen iets minder functies als
http://www.phphulp.nl/php/scripts/7/280/
Boris Mattijssen
Boris Mattijssen
20 jaar geleden
 
0 +1 -0 -1
Mooi script alleen waar slaat dit op?

$text = str_replace("0","0",$text);
$text = str_replace("1","1",$text);
$text = str_replace("2","2",$text);
$text = str_replace("3","3",$text);
$text = str_replace("4","4",$text);
$text = str_replace("5","5",$text);
$text = str_replace("6","6",$text);
$text = str_replace("7","7",$text);
$text = str_replace("8","8",$text);
$text = str_replace("9","9",$text);

Kan je net zo goed weg laten en van dit

if($text{0} == "0"){$text = substr($text, 1); }
if($text{0} == "0"){$text = substr($text, 1); }
if($text{0} == "0"){$text = substr($text, 1); }

kan je ook gewoon dit

if($text{0} == "0"){$text = substr($text, 1); }
maken?

Groetjes,
Boris
Matshofman
matshofman
20 jaar geleden
 
0 +1 -0 -1
over dat eerste heb je gelijk, dat zal ik even aanpassen maar over dat tweede ben ik het niet met je eens (als het klopt wat ik denk) want als je bijvoorbeeld "002" invoert moet het meerdere keren gedaan worden, als ik het weghaal werkt het niet meer.
Boris Mattijssen
Boris Mattijssen
20 jaar geleden
 
0 +1 -0 -1
dan zal het dus moeten worden

while($text{0} == "0"){
$text = substr($text, 1);
}

;)
Matshofman
matshofman
20 jaar geleden
 
0 +1 -0 -1
Ja dat werkt wel, ik pas het aan
Hipska BE
Hipska BE
20 jaar geleden
 
0 +1 -0 -1
Uw rekenfunctie ( reken(); ) kan je vervangen door dechex(); functie. Het is volledig onnodig om het wiel opnieuw uit te vinden.
Matshofman
matshofman
20 jaar geleden
 
0 +1 -0 -1
In dat geval kan het script een stuk korter.

Ik heb er nu gelijk even een extra optietje op gedaan dat hij de verkorte hex code weergeeft als dat mogelijk is.
Jesper Diovo
Jesper Diovo
20 jaar geleden
 
0 +1 -0 -1
Zo hoort het, complimenten :-). Ik ga het zeker even in m'n systeempje zetten, was al een tijdje op zoek naar zoiets, maar had zelf telkens niet de tijd om het zelf even uit te vogelen. Hartstikke bedankt en nogmaals m'n complimenten. Zo wordt het niveau van de script lib weer wat omhoog gehaald ;-).

Het enige is het gebruik van de <font>-tag. Dat kan vervangen worden voor <span>.
Riemer
Riemer
20 jaar geleden
 
0 +1 -0 -1
Ik wil niet lullig doen, maar het kan ook zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

$r
= 255;
$g = 127;
$b = 64;

$rgb = ($r << 16) + ($g << 8) + $b;
echo dechex( $rgb);

?>


Je zit alleen misschien met verloop nullen, maar daar kun je een for loop voor gebruiken om een vaste lengte te forceren.

edit: while veranderd naar for (stomme ik :-) )
Lode
Lode
20 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
class color{
    final static public function hex2rgb($hex){
        $hex = ltrim($hex, '#');
        switch(strlen($hex)){
            case
3    :     list($l, $m, $r) = str_split($hex, 1);
                        $hex = str_repeat($l, 2).str_repeat($m, 2).str_repeat($r, 2);

            case
6    :
                        $dec    = hexdec($hex);
                        $r         = 0xFF & $dec >> 16;
                        $g         = 0xFF & $dec >> 8;
                        $b         = 0xFF & $dec >> 0;
                        return array($r, $g, $b);
        }

                return false;
    }

    final static public function rgb2hex(array $rbg){
        list($r, $g, $b) = array_values($rgb);
        return sprintf('#%02X%02X%02X', $r, $g, $b);
    }
}

?>
Boris Mattijssen
Boris Mattijssen
20 jaar geleden
 
0 +1 -0 -1
@riemer, kun je me uitleggen wat "<<" dit betekend?
GaMer B
GaMer B
20 jaar geleden
 
0 +1 -0 -1
Quote:
@riemer, kun je me uitleggen wat "<<" dit betekend?

brie, dat is een bitwise operator.
Hipska BE
Hipska BE
20 jaar geleden
 
0 +1 -0 -1
waarom nog steeds het wiel opnieuw uitvinden?
Vervang lijn 3 t.e.m. 29 door dit :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

    $r2
= $_POST["r"];
    $g2 = $_POST["g"];
    $b2 = $_POST["b"];

    $r = dechex($r2);
    $g = dechex($g2);
    $b = dechex($b2);

    $hexant = $r.$g.$b;  
?>

En meer hoef je niet te doen daar in het begin.
Riemer
Riemer
20 jaar geleden
 
0 +1 -0 -1
Hipska, je zit misschien nog wel met verloopnullen met waardes die kleiner zijn dan 16 (en dit voor alle getallen, bij mijn manier alleen een verloop nul als r > 16).
Het lijkt mij het beste dat de manier van lode wordt gebruikt, deze is het meest strikt te noemen in zijn representatie van de kleur. Alhoewel ik wel wat twijfel over zijn hex2rgb functie met 3 hex karakters.

@brie, dat zijn inderdaad bitwise operators. Ik gebruik het om de waardes op bepaalde plekken te zetten. Dit aangezien van (rechts naar links) de eerste byte zo de kleur b wordt, 2de = g en derde = r. Hiermee stop je dus de kleuren in een 32 bit integer (alpha kanaal eruit gelaten), wanneer je het dus weer naar HEX converteerd krijg je zo weer de waardes op de goede volgorde (links naar rechts). Eerst de R kanaal, dan G en dan weer B. Ik ga hier er wel vanuit dat de kleuren in de range van 0 t/m 255 zijn.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Lode
Lode
20 jaar geleden
 
0 +1 -0 -1
Dit zijn voor mij interne functies.. Dus validatie is een beetje overbodig.
En mocht ik het wel doen, dan is dat buiten de functie...

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. rgb-naar-hexa-omreken-script

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.