ForHosting KIT · Bilder bearbeiten & analysieren

RGB-zu-RGB565-Packer

Machen Sie aus einer RGB-Farbe das 16-Bit-Wort, das ein TFT-Display erwartet: Orange mit 255, 128, 0 ergibt 64512, also 0xFC00. Rot behält fünf Bit, Grün sechs und Blau fünf, abgeschnitten statt gerundet. Kostenlos in Ihrem Browser.

  • Kostenlos
  • Läuft in Ihrem Browser
  • Ohne Anmeldung
  • Ihre Daten bleiben auf Ihrem Gerät
Nutzen Sie es über WebAPIE-MailTelegramApp bald
Wenn Sie eingeben
Widerstand (Ω)
255
G
128
B
0
Erhalten Sie
Rgb565
64.512
Hex
0xFC00
Hexadezimalziffern
FC00
Bits
1111110000000000

Eingebettete TFT-Controller, Grafikbibliotheken für Mikrocontroller und viele Handheld-Spielkonsolen speichern jedes Pixel als ein einziges sechzehnbitiges RGB565-Wort statt als drei getrennte Acht-Bit-Kanäle. Dieser RGB-zu-RGB565-Packer nimmt ganzzahlige Werte für Rot, Grün und Blau von null bis zweihundertfünfundfünfzig entgegen und packt sie, indem ungenutzte niederwertige Bits abgeschnitten werden: fünf Bits Rot, sechs Bits Grün und fünf Bits Blau; anschließend wird das klassische Sechzehn-Bit-Layout zusammengesetzt, das ILI9341, ST7735, ST7789, SSD1351, Adafruit GFX und TFT_eSPI verwenden. Die Umwandlung ist vollständig deterministisch, rundet nicht, ruft kein Netzwerk auf und hängt niemals von der Uhr ab.

Warum Displays mit 16 Bit pro Pixel arbeiten

Eingebettete TFT-Controller, Grafikbibliotheken für Mikrocontroller und viele Handheld-Konsolen speichern jedes Pixel als ein einziges 16-Bit-Wort statt als drei Kanäle mit 8 Bit. Das spart Speicher, kostet aber Genauigkeit. RGB565 gibt Rot fünf Bit, Grün sechs und Blau fünf, weil das Auge auf Grün am empfindlichsten reagiert; das zusätzliche Bit verringert dort Farbstufen am stärksten. Diese Anordnung nutzen Controller wie ILI9341, ST7735 und ST7789 sowie Bibliotheken wie Adafruit GFX. Wenn Sie Markenfarben oder eine Palette auf ein solches Display bringen möchten, brauchen Sie genau dieses Format.

So wird gepackt und was oft verwechselt wird

Rot und Blau werden um drei Bit nach rechts verschoben, Grün um zwei; die wegfallenden unteren Bit werden verworfen, nicht gerundet. Danach wird Rot ganz nach oben gesetzt, Grün in die Mitte und Blau nach unten. So entsteht eine Zahl von 0 bis 65535, und Orange mit 255, 128, 0 wird zu 64512. Häufige Verwechslungen: RGB555, das Grün nur fünf Bit gibt, oder die Erwartung, dass ein Wert über 255 still begrenzt wird. Solche Werte werden mit einer klaren Meldung abgelehnt. Brauchen Sie stattdessen eine Farbe für ein Stylesheet, ist ein Hex-Konverter der richtige Weg.

Wie das RGB565-Packen funktioniert und was die Antwort enthält

Im achtbittigen sRGB ist jeder der Kanäle Rot, Grün und Blau eine Ganzzahl von null bis zweihundertfünfundfünfzig — mehr Genauigkeit, als ein sechzehnbitiger Framebuffer behalten kann. RGB565 verwendet fünf Bits für Rot, sechs für Grün und fünf für Blau, weil das menschliche Auge für Grün empfindlicher ist; das Extra-Bit wird dort ausgegeben, wo es Streifenbildung am stärksten mindert.

Dieser Packer verwendet das branchenübliche Abschneiden, nicht das Runden: Rot wird um drei Bits nach rechts geschoben, Grün um zwei Bits nach rechts und Blau um drei Bits nach rechts, wodurch die ungenutzten niederwertigen Bits entfallen. Die drei Felder werden dann als Rot um elf Bits nach links geschoben, bitweises Oder mit Grün um fünf Bits nach links geschoben, bitweises Oder mit Blau zusammengesetzt und ergeben eine eindeutige vorzeichenlose Ganzzahl von null bis fünfundsechzigtausendfünfhundertfünfunddreißig.

Reines Schwarz packt zu null, reines Weiß zum Maximum, reines Rot wird zum vertrauten Hex-Wort F800, reines Grün zu 07E0 und reines Blau zu 001F. Es gibt kein stilles Umwickeln von zweihundertsechsundfünfzig, kein Runden der verworfenen Bits und weder Netz noch Uhr im Ablauf, sodass dasselbe Tripel stets dasselbe sechzehnbitige Wort ergibt.

Wo ein RGB-zu-RGB565-Packer seinen Nutzen zeigt

Studierende sehen sie in Kursen zu eingebetteten Systemen, die TFT-Framebuffer vorstellen, in Spieleprogrammierlaboren für sechzehnbitige Handhelds und in Interview-Aufwärmübungen, die nach dem Bitlayout von RGB565 fragen. Werkzeugautorinnen und -autoren rufen denselben Vertrag aus Build-Skripten auf, um Palettenköpfe zu befüllen, aus Eigenschaftstests, die einen neuen Treiber mit diesem Orakel vergleichen, und aus Design-Token-Pipelines, die aus einer einzigen Wahrheitsquelle zugleich ein CSS-Hex und ein Firmware-Wort ausgeben müssen.

Kombinieren Sie ihn mit einem RGB-zu-Hex-Konverter, wenn der nächste Verbraucher ein Stylesheet ist, mit einem RGB-zu-Dezimalzahl-Packer, wenn Sie ein vierundzwanzigbitiges Wort brauchen, und mit weiteren kostenlosen deterministischen Farbwerkzeugen, wenn Sie ein kleines Labor für die Hygiene eingebetteter Paletten aufbauen.

TFT-Firmware-Paletten

Wandeln Sie Marken-RGB-Tripel in RGB565-Wörter für Farbtabellen von ILI9341, ST7735, ST7789 und Adafruit GFX um.

Sprite- und Framebuffer-Umwandlung

Packen Sie Offline-Assets in 16-Bit-C-Arrays und SPI-High-/Low-Bytes, die der Byte-Reihenfolge des Controllers entsprechen.

Deterministische Treibertests

Nageln Sie abgeschnittene RGB565-Orakel in der CI fest, damit ein neuer Grafikhelfer nie still auf Runden umschaltet.

Rundet dieser Packer die Extra-Bits oder schneidet er sie ab?

Er schneidet ab. Rot und Blau verwerfen ihre 3 niederwertigen Bits (>> 3) und Grün verwirft seine 2 niederwertigen Bits (>> 2). Das entspricht Adafruit GFX, TFT_eSPI und typischen Beispielen für TFT-Controller. Es wird nicht gerundet.

Was geschieht, wenn ein Kanal außerhalb von 0–255 liegt?

Kanäle werden niemals begrenzt oder umwickelt, sodass eine 256 aus einem defekten Wähler kein falsches Pixel werden kann.

Warum erhält Grün sechs Bits und Rot und Blau nur fünf?

Das menschliche Auge ist für Grün empfindlicher, daher gibt RGB565 das Extra-Bit dort aus. Die Aufteilung 5-6-5 ist das sechzehnbitige Layout der gängigen TFT-Controller, auf die dieses Werkzeug zielt.

Welche Wörter ergeben reines Rot, Grün und Blau?

Reines Rot wird zu F800, reines Grün zu 07E0 und reines Blau zu 001F. Schwarz ergibt null, Weiß den größten möglichen Wert 65535.

Warum wird aus Rot 255 im Ergebnis 248?

Weil die unteren Bit abgeschnitten werden. Von Rot bleiben fünf Bit, also die Stufe 31, und zurückgerechnet auf 8 Bit entspricht das 248. Es wird bewusst nicht gerundet, wie bei üblichen Display-Treibern.

Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.

POSThttps://api.kit.forhosting.com/color/rgb-rgb565

Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.

curl -X POST https://api.kit.forhosting.com/color/rgb-rgb565 \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"r":255,"g":128,"b":0}'
{
  "r": 255,
  "g": 128,
  "b": 0
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "color.rgb_rgb565",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.

pro Anfrage$0.002

Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.

min_channel0
max_channel255
HTTPCodeBedeutung
401unauthorizedDer API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer).
402insufficient_balanceIhr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht.
404unknown_typeUnbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog.
429rate_limitedZu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt.

Kanäle außerhalb von null bis zweihundertfünfundfünfzig werden mit einem klaren invalid_input-Fehler abgelehnt, statt still umwickelt oder begrenzt zu werden.

Wie das RGB565-Packen funktioniert und was die Antwort enthält

Die Antwort wiederholt die geprüften Kanäle r, g und b, liefert die gepackte Ganzzahl als rgb565, eine vierstellige Hex-Zeichenkette in Großbuchstaben mit Präfix 0x, die vier Hex-Ziffern allein, eine sechzehnstellige Binärzeichenkette, die abgeschnittenen Felder r5, g6 und b5, die rekonstruierten Acht-Bit-Kanäle r_q, g_q und b_q durch erneutes Linksschieben dieser abgeschnittenen Felder, das hohe und das niedrige Byte, die eine SPI-Übertragung an einen Controller der ILI9341-Familie in dieser Reihenfolge erwartet, CSS-rgb-Zeichenketten der Originalfarbe und der quantisierten Farbe, die Methodenkennung truncate_rgb565, die Bitformel und max stets gleich 65535.

Wie r, g und b geprüft werden und warum das Abschneiden ehrlich bleibt

Äußere Leerzeichen auf Zeichenkettenkanälen werden entfernt; ein optionales führendes Plus ist nur zulässig, wenn die restlichen Zeichen Dezimalziffern sind, die sich als Ganzzahl im Bereich lesen lassen. Werte wie einhundertachtundzwanzig Punkt fünf scheitern an der Prüfung statt gerundet zu werden, und negative Zahlen oder Werte ab zweihundertsechsundfünfzig scheitern mit einer Meldung, die den Kanal nennt und angibt, dass er zwischen null und zweihundertfünfundfünfzig bleiben muss. Fehlende Felder und leere Zeichenketten nach dem Trimmen werden ebenso abgelehnt. Das Abschneiden ist der Vertrag, weil Adafruit GFX, TFT_eSPI, die Datenblattbeispiele zu ILI9341 und nahezu jedes Arduino-Farbmakro die niederwertigen Bits per Rechtsschieben verwerfen; ein Packer, der runden würde, würde von bereits ausgelieferter Firmware abweichen und Goldentests zerbrechen, die 0xF800 für volles Rot festnageln. Die bevorzugten Felder sind r für Rot, g für Grün und b für Blau. Die Aliase red und großes R, green und großes G sowie blue und großes B werden akzeptiert, damit Tabellenkalkulationen, Abfragezeichenfolgen und typisierte Formulare denselben Vertrag wiederverwenden können, ohne Spalten umzubenennen. Eine bloße JSON-Zahl wird nur akzeptiert, wenn sie eine endliche Ganzzahl zwischen null und zweihundertfünfundfünfzig ist. Die rekonstruierten Kanäle r_q, g_q und b_q zeigen die Farbe, die nach dem Verlust dieser Bits tatsächlich im Framebuffer landet — die ehrliche Vorschau, die Künstlerinnen und Künstler brauchen, bevor sie eine Palette festlegen.

Wo ein RGB-zu-RGB565-Packer seinen Nutzen zeigt

Firmware-Autorinnen und -Autoren begegnen dieser Abbildung, wenn ein Markenleitfaden achtbitige RGB-Muster auflistet und der Anzeigetreiber eine uint16_t-Farbe verlangt, wenn ein Sprite-Bogen offline in ein 16-Bit-C-Array gewandelt wird, oder wenn ein serielles Protokoll ein gepacktes Wort ausgibt und der Arbeitsplatz die passende Hex-Konstante braucht. Auf dieser Seite läuft die Arbeit vollständig in Ihrem Browser; über die API kostet jedes erfolgreiche Packen $0.002, fehlgeschlagene Prüfung wird nicht berechnet, und nach der Antwort wird nichts gespeichert. Diese Trennung — freie interaktive Erkundung und eine kostenpflichtige, identische API — entspricht dem Rest des KIT-Tier-A-Katalogs und ermöglicht den Übergang von einer Bankdemo oder einer Vorlesungsfolie zu einer automatisierten Firmware-Pipeline, ohne das gepackte Ergebnis zu ändern.

Wie wandelt man RGB in RGB565 um?

Senden Sie JSON mit den ganzzahligen Feldern r, g und b von 0 bis 255. Das Antwortfeld rgb565 ist das gepackte 16-Bit-Wort; hex ist die vierstellige Form mit Präfix 0x, die in der Firmware verwendet wird.

Ist der RGB-zu-RGB565-Packer kostenlos?

Das Browser-Werkzeug läuft kostenlos auf Ihrem Gerät. API-Aufrufe nutzen das vorausbezahlte KIT-Guthaben zu $0.002 je erfolgreichem Element; fehlgeschlagene Prüfungen werden nicht berechnet.

Vollständige KIT-Dokumentation lesen →