Comment faire pour convertir une couleur RVBA tuple, exemple (96, 96, 96, 202), correspondant à la couleur de RVB tuple?
Edit:
Ce que je veux est d'obtenir une valeur RVB qui est le plus semblable à la RGBA tuple visuellement sur fond blanc.
Comment faire pour convertir une couleur RVBA tuple, exemple (96, 96, 96, 202), correspondant à la couleur de RVB tuple?
Edit:
Ce que je veux est d'obtenir une valeur RVB qui est le plus semblable à la RGBA tuple visuellement sur fond blanc.
J'ai upvoted Johannes de réponse parce qu'il a raison à ce sujet.
Plus de réponse spécifique, cependant, intègre la valeur alpha dans la couleur réelle résultat basé sur un arrière-plan opaque de couleur (ou " mat " comme il l'appelle).
Par exemple, en Supposant que 0 est opaque et 255 est transparent, alors 255,255,255,127 RGBA avec un noir mat entraînera 127,127,127 valeur RVB.
Il existe un algorithme pour ce (à partir de ce lien wikipédia):
Source
.BGColor
Maintenant, la conversion est définie comme (à compléter pseudo code ici!):
Source => Target = (BGColor + Source) =
Target.R = ((1 - Source.A) * Source.R) + (Source.A * BGColor.R)
Target.G = ((1 - Source.A) * Source.G) + (Source.A * BGColor.G)
Target.B = ((1 - Source.A) * Source.B) + (Source.A * BGColor.B)
Pour obtenir la valeur finale de 0 à 255 valeurs de Target
vous suffit de multiplier toutes les valeurs normalisées de back up 255, assurez-vous de la pac à 255 si l'une des valeurs combinées dépasser 1,0 (c'est de la sur-exposition et il existe des algorithmes plus complexes traitant de ce qui impliquent l'ensemble du traitement de l'image, etc.).
EDIT: Dans votre question, vous avez dit que vous voulez un fond blanc, dans ce cas il suffit de fixer BGColor à 255,255,255.
hm... quant à
http://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending
la solution fournie par Andras Zoltan devrait être légèrement modifiée:
Source => Target = (BGColor + Source) =
Target.R = ((1 - Source.A) * BGColor.R) + (Source.A * Source.R)
Target.G = ((1 - Source.A) * BGColor.G) + (Source.A * Source.G)
Target.B = ((1 - Source.A) * BGColor.B) + (Source.A * Source.B)
Cette version modifiée fonctionne très bien pour moi, parce que dans le précédent. version rgba(0,0,0,0) avec de la matte rgb(ff,ff,ff) sera modifié pour rgb(0,0,0).
Cela dépend de l'espace de couleur que vous utilisez. Si la LED est en pré-multiplié espace de couleurs et sont semi-transparents, vous devez diviser la sortie de l'alpha pour obtenir la bonne couleur RVB. Si la couleur n'est pas en pré-multiplié couleur-espace, alors vous pouvez simplement jeter le canal alpha.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.