BMP Hex->RGB



  • Hallo!

    Habt ihr eine Idee wie ich aus den Ascii Zeichen(2. Bild aus der URL - Zeichen die neben den Hexcode stehen) auf den RGB Wert komm? Also wie kann ich es berechnen oder gibt es schon eine Funktion dafür? Die zweite Möglichkeit wäre erstmal, den Hexwert zu errechnen und dann den RGB-Wert..gibt es dafür schon eine Funktion in der Art RGB(Hexwert)?

    http://www.dma.ufg.ac.at/app/link/Grundlagen:2D-Grafik/module/12858?step=2

    Ich brauch das um ein Toleranzwert zu bilden bei einem Bildvergleich...
    Wäre sehr dankbar für eure Hilfe?



  • Meinst du das so, dass du z.B. einen Pixel 0x00ffa05d (32 Bit mit Alpha-Kanal) hast und daraus die einzelnen Kanäle bekommen willst? Dann könntest du das z.B. ganz einfach mit Makros machen:

    #define CHANR(u) (((u)&0x00ff0000)>>16)
    #define CHANG(u) (((u)&0x0000ff00)>>8 )
    #define CHANB(u) (((u)&0x000000ff)    )
    
    //Anwendung:
    int argb=0x00ffa05d;  //Beispielpixel
    
    int r=CHANR(argb);    //Schwupps, da sind die einzelnen Kanäle!
    int g=CHANG(argb);    //
    int b=CHANB(argb);    //
    

    Du kannst dir natürlich auch eine Funktion basteln...



  • Ja aslo mit den einzelnen Kanälen stimmt schon, aber wie komm ich von den 3 aufeinander folgenden Zeichen auf den Hexwert(ohne Alpha-Kanal)?

    Beispiel wäre also von "..." auf "000000"! Was ja Scwarz wäre.

    Eigentlich würde auch ausreichen wenn ich bloß ein zeichen in den Hexwert wandle, also "." in "00" sozusagen. Was in dem Fall der B-Wert wäre von RGB.

    Ist das irgendwie möglich?



  • Russel schrieb:

    Ja aslo mit den einzelnen Kanälen stimmt schon, aber wie komm ich von den 3 aufeinander folgenden Zeichen auf den Hexwert(ohne Alpha-Kanal)?

    Beispiel wäre also von "..." auf "000000"! Was ja Scwarz wäre.

    Eigentlich würde auch ausreichen wenn ich bloß ein zeichen in den Hexwert wandle, also "." in "00" sozusagen. Was in dem Fall der B-Wert wäre von RGB.

    Ist das irgendwie möglich?

    Ein Zeichen ist doch letztlich ein integraler Wert (Stichwort ASCII-Tabelle).

    Beispiel '.': das Zeichen entspricht dem Wert 46 dezimal (weiß nicht, wie du auf 0/schwarz kommst), also hexadezimal 0x2E. Und schon hast du den Hex-Wert zu deinem Zeichen.


Anmelden zum Antworten