2011-10-05 13 views
3

Je me demandais quelle est la meilleure façon de convertir une couleur RVB 24 bits (8 bits par couleur) en une couleur 8 bits (2bits Blue, 3 Green, 3 Red). J'aimerais le code C pour le faire.Comment convertir 24 bits RVB en 8 bits RVB

+0

S'il vous plaît ajouter des détails sur le langage de programmation et/ou la représentation des couleurs. –

+0

Désolé j'ai complètement oublié – Gootik

Répondre

6

Le format RVB 8 bits est normalement un format de couleur indexé (palettisé), voir Palette (computing). Cependant, comme vous l'avez décrit, obtenir 8 bpp sur 24 bpp est relativement simple: vous devez supprimer les bits les moins significatifs et fusionner les bits en une seule octet, par pixel. AFAIK ce n'est pas une représentation de couleur de pixel standard ou bien connue.

+0

Etes-vous sûr que vous devriez jeter des octets moins significatifs au lieu de se rapprocher? –

+2

Il existe des options telles que le tramage. Le plus simple pour la compréhension et la mise en œuvre consiste à éliminer les bits et à réduire les détails afin de les adapter à un nombre de bits fixe. Les modifications en plus de cela sont d'ajouter encore plus de bruit pour laisser une meilleure qualité subjective. Quoi qu'il en soit, je parierais que si OP revenait en arrière pour clarifier la question, un format de couleur indexé apparaîtrait. –

0

Pour convertir 8bit [0 - 255] Valeur en 3bit [0, 7], le 0 est pas un problème, mais rappelez-vous 255 devrait être converti en 7, de sorte que la formule devrait être Red3 = Red8 * 7/255.

Pour convertir la couleur de 24bit en 8bit (RRRGGGBB),

8bit Color = (Red * 7/255) << 5 + (Green * 7/255) << 2 + (Blue * 3/255) 
Questions connexes