ForHosting KIT · Imágenes

Empaquetador RGB a RGB565

Convierta un color RGB en la palabra de 16 bits que espera una pantalla TFT: el naranja 255, 128, 0 queda en 64512, o 0xFC00. El rojo conserva cinco bits, el verde seis y el azul cinco, recortados y no redondeados. Gratis en su navegador.

  • Gratis
  • Funciona en su navegador
  • Sin registro
  • Sus datos no salen de su equipo
Úselo desde WebAPIEmailTelegramApp pronto
Si escribe
Resistencia (Ω)
255
G
128
B
0
Obtiene
Rgb565
64 512
Hex
0xFC00
Dígitos hexadecimales
FC00
Bits
1111110000000000

Los controladores TFT embebidos, las bibliotecas gráficas para microcontroladores y muchas consolas portátiles almacenan cada píxel como una sola palabra RGB565 de dieciséis bits, en lugar de tres canales de ocho bits por separado. Este empaquetador de RGB a RGB565 toma enteros de rojo, verde y azul entre cero y doscientos cincuenta y cinco y los comprime recortando los bits bajos que sobran: cinco bits de rojo, seis de verde y cinco de azul, y luego arma el diseño clásico de dieciséis bits que usan ILI9341, ST7735, ST7789, SSD1351, Adafruit GFX y TFT_eSPI. La conversión es por completo determinista, no redondea, no llama a la red y no depende del reloj.

Cómo funciona el empaquetado RGB565 y qué contiene la respuesta

En sRGB de ocho bits, cada uno de rojo, verde y azul es un entero de cero a doscientos cincuenta y cinco, más precisión de la que un framebuffer de dieciséis bits puede conservar. RGB565 dedica cinco bits al rojo, seis al verde y cinco al azul porque el ojo humano es más sensible al verde, de modo que el bit extra se gasta donde más reduce el bandeado.

Este empaquetador usa el recorte de bits habitual en la industria, no el redondeo: el rojo se desplaza tres bits a la derecha, el verde dos bits a la derecha y el azul tres bits a la derecha, y se descartan los bits bajos que sobran.

Los tres campos se ensamblan como rojo desplazado once bits a la izquierda, disyunción bit a bit con el verde desplazado cinco bits a la izquierda, disyunción bit a bit con el azul, y producen un entero sin signo único de cero a sesenta y cinco mil quinientos treinta y cinco. El negro puro se empaqueta a cero, el blanco puro al máximo, el rojo puro se convierte en la conocida palabra hexadecimal F800, el verde puro en 07E0 y el azul puro en 001F.

No hay envoltura silenciosa de doscientos cincuenta y seis, ni redondeo de los bits descartados, ni red ni reloj en el camino, de modo que el mismo triplete produce siempre la misma palabra de dieciséis bits.

Dónde resulta útil un empaquetador de RGB a RGB565

Los estudiantes lo ven en cursos de sistemas embebidos que presentan framebuffers TFT, en laboratorios de programación de juegos orientados a portátiles de dieciséis bits y en calentamientos de entrevista que preguntan el diseño de bits de RGB565.

Los autores de herramientas llaman el mismo contrato desde scripts de compilación para sembrar cabeceras de paleta, desde pruebas de propiedades que comparan un controlador nuevo con este oráculo, y desde tuberías de tokens de diseño que deben emitir a la vez un hexadecimal CSS y una palabra de firmware desde una sola fuente de verdad.

Combínelo con un convertidor de RGB a hexadecimal cuando el siguiente consumidor sea una hoja de estilo, con un empaquetador de RGB a entero decimal cuando necesite una palabra de veinticuatro bits, y con otras herramientas de color deterministas y gratuitas cuando arme un laboratorio pequeño de higiene de paletas embebidas.

Paletas de firmware para TFT

Convierta tripletes RGB de marca en palabras RGB565 para tablas de color de ILI9341, ST7735, ST7789 y Adafruit GFX.

Conversión de sprites y framebuffer

Empaquete activos fuera de línea en arreglos C de 16 bits y bytes altos y bajos SPI que respetan el orden del controlador.

Pruebas deterministas de controladores

Fije oráculos RGB565 recortados en CI para que un nuevo ayudante gráfico no pase en silencio al redondeo.

¿Cómo convierto RGB a RGB565?

El campo rgb565 de la respuesta es la palabra de 16 bits empaquetada; hex es la forma de cuatro dígitos con prefijo 0x que usa el firmware.

¿Este empaquetador redondea o recorta los bits de más?

Recorta. El rojo y el azul descartan sus 3 bits bajos (>> 3) y el verde descarta sus 2 bits bajos (>> 2). Eso coincide con Adafruit GFX, TFT_eSPI y los ejemplos habituales de controladores TFT. No hay redondeo.

¿Qué ocurre si un canal queda fuera de 0–255?

Los canales nunca se saturan ni se envuelven, de modo que un 256 de un selector roto no puede convertirse en un píxel incorrecto.

¿El empaquetador de RGB a RGB565 es gratuito?

La herramienta del navegador se ejecuta gratis en su dispositivo.

¿Por qué el verde recibe seis bits y el rojo y el azul solo cinco?

El ojo humano es más sensible al verde, de modo que RGB565 gasta el bit extra ahí. La división 5-6-5 es el diseño de dieciséis bits que usan los controladores TFT habituales a los que apunta esta herramienta.

Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.

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

¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.

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"
  }
}

La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.

Por solicitud$0.002

Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.

min_channel0
max_channel255
HTTPCódigoSignificado
401unauthorizedAPI key ausente o inválida.
402insufficient_balanceEl saldo no cubre el precio de la tarea.
404unknown_typeEl tipo de tarea no existe.
429rate_limitedDemasiadas peticiones. Use el webhook en vez de sondear.

Los canales fuera de cero a doscientos cincuenta y cinco se rechazan con un error invalid_input claro, en lugar de envolverse o saturarse en silencio.

Cómo funciona el empaquetado RGB565 y qué contiene la respuesta

La respuesta repite los canales validados r, g y b, devuelve el entero empaquetado como rgb565, una cadena hexadecimal de cuatro dígitos en mayúsculas con prefijo 0x, los cuatro dígitos hexadecimales solos, una cadena binaria de dieciséis caracteres, los campos recortados r5, g6 y b5, los canales de ocho bits reconstruidos r_q, g_q y b_q al desplazar de nuevo a la izquierda esos campos recortados, los bytes alto y bajo que una transferencia SPI a un controlador de la familia ILI9341 espera en ese orden, cadenas CSS rgb del color original y del cuantizado, la etiqueta de método truncate_rgb565, la fórmula de bits y max siempre igual a 65535.

Cómo se validan r, g y b y por qué el recorte de bits es honesto

Los espacios exteriores de los canales en cadena se recortan; un signo más inicial opcional solo se admite cuando el resto son dígitos decimales que se interpretan como un entero dentro del rango. Valores como ciento veintiocho punto cinco fallan la validación en lugar de redondearse, y los negativos o de doscientos cincuenta y seis en adelante fallan con un mensaje que nombra el canal y afirma que debe permanecer entre cero y doscientos cincuenta y cinco. Los campos ausentes y las cadenas vacías tras recortar espacios se rechazan del mismo modo. El recorte es el contrato porque Adafruit GFX, TFT_eSPI, los ejemplos de la hoja de datos de ILI9341 y casi toda macro de color de Arduino descartan los bits bajos con un desplazamiento a la derecha; un empaquetador que redondeara discreparía del firmware ya desplegado y rompería las pruebas áureas que fijan 0xF800 para el rojo pleno. Los campos preferidos son r para el rojo, g para el verde y b para el azul. Se aceptan los alias red y R mayúscula, green y G mayúscula, y blue y B mayúscula, para que hojas de cálculo, cadenas de consulta y formularios tipados reutilicen el contrato sin renombrar columnas. Un número JSON desnudo se acepta únicamente si es un entero finito entre cero y doscientos cincuenta y cinco. Los canales reconstruidos r_q, g_q y b_q muestran el color que realmente llega al framebuffer cuando esos bits ya no están, que es la vista previa honesta que un artista necesita antes de fijar una paleta.

Dónde resulta útil un empaquetador de RGB a RGB565

Los autores de firmware se encuentran este mapeo cuando una guía de marca lista muestras RGB de ocho bits y el controlador de pantalla pide un color uint16_t, cuando una hoja de sprites se convierte fuera de línea en un arreglo C de 16 bits, o cuando un registro serie imprime una palabra empaquetada y el escritorio necesita la constante hexadecimal equivalente. En esta página el trabajo se ejecuta por completo en su navegador; a través de la API cada empaquetado correcto cuesta $0.002, la validación fallida no se cobra y nada se almacena después de devolver la respuesta. Esa separación —exploración interactiva gratuita y una API de pago idéntica— coincide con el resto del catálogo tier A de KIT y le permite pasar de una demostración de banco o una diapositiva de clase a una tubería de firmware automatizada sin cambiar el resultado empaquetado.

Ver la documentación completa del KIT →