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:
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:
Alles anzeigen
Download
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:
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-Quellcode
- '-------------------------------------------------------------------------------
- ' change RGB24 to RGB-16 (RGB 5-6-5)
- '-------------------------------------------------------------------------------
- Function Rgb565convert(byval Col_red As Byte , Byval Col_green As Byte , Byval Col_blue As Byte) As Word
- ' blue green red
- ' [76543210] [76543210] [76543210]
- ' 11111xxx 111111xx 11111xxx
- !ldd R26, Y+0
- !Ldd R27, Y+1
- !LD R18, X 'B
- !ldd R26, Y+2
- !Ldd R27, Y+3
- !LD R17, X 'G
- !ldd R26, Y+4
- !Ldd R27, Y+5
- !LD R16, X 'R
- 'prepare green
- !ANDI R17, &b1111_1100
- !roL R17
- !roL R17
- !roL R17
- !roL R17
- !MOV R24, R17 ' green to R24
- !roR R17 ' shift with carry back
- ' Low Byte red bit 0 to 4
- !LSR R16
- !LSR R16
- !LSR R16
- !ANDI R16, &b0001_1111
- '5 bit red and 3 bit green
- !ANDI R17, &b1110_0000
- !OR R16, R17 ' add green and red (low byte)
- '3 bit green and 5 bit blue
- !ANDI R18, &b1111_1000
- !ANDI R24, &b0000_0111
- !OR R18, R24 ' add green and blue (high byte)
- Loadadr Rgb565convert , X
- !st x+ ,R16
- !st x+ ,R18
- End Function
Download
9.597 mal gelesen