Ingo: RGB - Farbcode aus HEX-Farbcode (#XXXXXX) berechnen

Hallo Leute,

wie kann ich mittels PHP aus einem HEX-Farbcode (z.B #000000)den RGB-Farbcode (z.B. 0,0,0) berechnen?
Gibts da ne Lösung?

Gruss, Ingo

  1. Hallo Leute,

    wie kann ich mittels PHP aus einem HEX-Farbcode (z.B #000000)den RGB-Farbcode (z.B. 0,0,0) berechnen?
    Gibts da ne Lösung?

    $r = hexdec(substr($color, 0, 2));
    $g = hexdec(substr($color, 2, 2));
    $b = hexdec(substr($color, 4, 2));

    siehe: [url=http://www.php.net/manual/de/function.hexdec.php]

    *RTFM*

    Gruss, Ingo

    1. Danke, geht das auch umgekehrt???

      1. Hallo Ingo,

        Danke, geht das auch umgekehrt???

        mhh... wie heißt die Funktion - richtig: hexdec() - dann drehe die Teile des Funktionsnamens halt mal um, genau, dann erhälst du dechex() (->http://www.php.net/manual/de/function.dechex.php) - und das dürfte auch die gesuchte Funktion sein :-)

        Grüße aus Nürnberg
        Tobias

        1. Hi Tobias,

          das klappt aber nicht mit

          function dec2hex($dec)
          {

          if($dec > 2147483648)
                 {
                 $result = dechex($dec - 2147483648);
                 $prefix = dechex($dec / 268435456);
                $suffix = substr($result,-7);
                 $hex = $prefix.str_pad($suffix, 7, "0000000", STR_PAD_LEFT);
                 }
          else
                {
                 $hex = dechex($dec);
                }

          return($hex);
          }

          echo dec2hex(255,255,255);

          Mach ich was falsch ...

          Danke, Ingo

          1. Hallo Ingo,

            function dec2hex($dec)

            hier übergibst du 1 Variable...

            echo dec2hex(255,255,255);

            ...hier ruftst du die Funktion aber mit 3 Variablen auf
            wenn ich das richtig verstanden habe, muss ein dezimaler Wert übergeben werden, und nicht 3.

            wenns nicht klappt schau dir doch mal die anderen Beispiele an.

            Grüße aus Nürnberg
            Tobias

          2. /*
            deine ursprüngliche Frage war:
            "wie kann ich mittels PHP aus einem HEX-Farbcode (z.B #000000)den RGB-Farbcode (z.B. 0,0,0) berechnen?
            Gibts da ne Lösung?"

            *malerinner*

            also:

            */

            function hex2rgb($hexcolor) {

            $vR = hexdec(substr($hexcolor,0,2));
                $vG = hexdec(substr($hexcolor,2,2));
                $vB = hexdec(substr($hexcolor,4,2));

            $output = array("r"=>$vR, "g"=>$vG, "b"=>$vB);

            return $output;
                }

            $mycolor = "FF0000";

            echo "<pre>\n".
                   "Rotanteil:   ".$mycolor["r"]."\n".
                   "Gruenanteil: ".$mycolor["g"]."\n".
                   "Blauanteil:  ".$mycolor["b"]."\n".
                   "</pre>";

            /*
            ...im übrigen sieht das so aus, als ob du nicht wirklich einen Plan hast.. ich erinnere mal an die eine Funktion, die EINEN Parameter erwartet, der du aber 3 (in deinem Fall Integer-Werte), übergibst...

            foo(255,255,255)  <-- 3 Parameter (Integer)

            foo("255,255,255") <--- 1 Parameter (String)

            m.G.
            WFUX

            */

            1. sorry kleiner fehler...

              und zwar muss das nicht

              $mycolor = "FF0000"

              ..heissen, sondern

              $mycolor = hex2rgb("FF0000");

              ---
              WFUX

    2. Hallo namenloser,

      $r = hexdec(substr($color, 0, 2));
      $g = hexdec(substr($color, 2, 2));
      $b = hexdec(substr($color, 4, 2));

      kopieren kannst du, ja.

      siehe: [url=http://www.php.net/manual/de/function.hexdec.php]

      +</faq/#Q-19> -> http://www.php.net/manual/de/function.hexdec.php

      *RTFM*

      *rtffs* ('f' -> 'faq', 's' -> 'selber') :-)

      außerdem finde ich die Frage jetzt nicht _so_ schlimm, als das man mit *rtfm* antworten müsste (ich kannte die Funktion auch noch nicht - gut, ich hätte sie vielleicht bei Bedarf auch selbst gefunden)

      Grüße aus Nürnberg
      Tobias