Farb-Konverter 24Bit zu 16Bit und 8 Bit

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • Farb-Konverter zur Wandlung von 24 Bit Farbwerten zu 16 Bit und 8 Bit Farbwerten
    Der hier vorgestellte Konverter wandelt 24 Bit Farbwerte in 16 Bit (5-6-5) und 8 Bit (3-3-2) Farbwerte


    Die Farben können im 24 Bit Farbraum über R-G-B Einsteller ausgewählt werden und werden in einen 16 Bit und 8 Bit Farbwert gewandelt.
    Der Ausgabewert wird in hexadezimaler, dezimaler und binärer Schreibweise dargestellt.
    Ein Anklicken eines Wertes übernimmt diesen in die Zwischenablage.
    Das Programm ist als 32-Bit Version für Windows kompiliert.
    Lauffähig ist es auf Win32, Win64 und unter Linux mit Wine.

    Image15.png

    Die genaue Funktionsweise:
    Es werden von den drei Grundfarben rot, grün, blau jeweils nur ein Teil der 8 Bits jeder Farbe benutzt.
    Für 16 Bit:
    Bei der Farbe Rot werden die fünf höherwertigen Bits benutzt.
    Bei der Farbe Grün werden die sechs höherwertigen Bits benutzt.
    Bei der Farbe Blau werden die fünf höherwertigen Bits benutzt.
    Für 8 Bit:
    Bei der Farbe Rot werden die drei höherwertigen Bits benutzt.
    Bei der Farbe Grün werden die drei höherwertigen Bits benutzt.
    Bei der Farbe Blau werden die zwei höherwertigen Bits benutzt.

    Die niederwertigeren Bits werden einfach ignoriert.

    Am Beispiel von Rot bei 16 Bit entfallen die Bits 0 bis 2, also 2^0, 2^1, 2^2 . Erst ein Zahlenwert über 7 (also ab 8 ) ergibt eine Änderung in der Farbe Rot im 16 Bit Format.
    Die 5 höherwertigen Bits von Rot werden in den 16 Bit Farbwert ganz nach links geschoben, danach folgen die höherwertigen 6 Bits von Grün und abschließend die 5 höherwertigen Bits von Blau.

    Dies kann man so darstellen:

    Source Code

    1. 24 Bit Farbwert:
    2. --ROT -- - Grün - - Blau -
    3. rrrrrrrr_gggggggg_bbbbbbbb 3 Byte
    4. 16 Bit Farbwert:
    5. rrrrrggg_gggbbbbb 2 Byte
    6. 8 Bit Farbwert:
    7. rrrgggbb 1 Byte


    Im 24 Bit Farbraum hat man 256*256*256 mögliche Farben = 16.777.216 Farben (Zahlenwert in 3 Bytes)
    Im 16 Bit Farbraum hat man 32*64*32 mögliche Farben = 65535 Farben (Zahlenwert in zwei Bytes - also ein Word)
    Im 8 Bit Farbraum hat man 2^8 mögliche Farben = 256 Farben (Zahlenwert in einem Byte)


    Sollte eine Wandlung innerhalb eines Bascom Programms nötig sein, kann diese Routine helfen:

    BASCOM Source Code

    1. '-------------------------------------------------------------------------------
    2. ' change RGB24 to RGB-16 (RGB 5-6-5)
    3. '-------------------------------------------------------------------------------
    4. Function Rgb565convert(byval Col_red As Byte , Byval Col_green As Byte , Byval Col_blue As Byte) As Word
    5. ' blue green red
    6. ' [76543210] [76543210] [76543210]
    7. ' 11111xxx 111111xx 11111xxx
    8. !ldd R26, Y+0
    9. !Ldd R27, Y+1
    10. !LD R18, X 'B
    11. !ldd R26, Y+2
    12. !Ldd R27, Y+3
    13. !LD R17, X 'G
    14. !ldd R26, Y+4
    15. !Ldd R27, Y+5
    16. !LD R16, X 'R
    17. 'prepare green
    18. !ANDI R17, &b1111_1100
    19. !roL R17
    20. !roL R17
    21. !roL R17
    22. !roL R17
    23. !MOV R24, R17 ' green to R24
    24. !roR R17 ' shift with carry back
    25. ' Low Byte red bit 0 to 4
    26. !LSR R16
    27. !LSR R16
    28. !LSR R16
    29. !ANDI R16, &b0001_1111
    30. '5 bit red and 3 bit green
    31. !ANDI R17, &b1110_0000
    32. !OR R16, R17 ' add green and red (low byte)
    33. '3 bit green and 5 bit blue
    34. !ANDI R18, &b1111_1000
    35. !ANDI R24, &b0000_0111
    36. !OR R18, R24 ' add green and blue (high byte)
    37. Loadadr Rgb565convert , X
    38. !st x+ ,R16
    39. !st x+ ,R18
    40. End Function
    Display All


    Download
    Files
    • ColConv.zip

      (801.05 kB, downloaded 1 times, last: )

    550 times viewed