gpt4 book ai didi

将两位颜色转换为八位颜色

转载 作者:行者123 更新时间:2023-12-01 11:57:07 27 4
gpt4 key购买 nike

我有六位颜色值,红色、绿色和蓝色各有两位。因此黑色将表示为二进制 000000、红色 110000、蓝色 000011、黄色 111100 等等。

我必须将此颜色转换为 24 位 rgb 值以将其传递给图形层 (DirectFB)。由于三(二进制11)要变成255(0xFF),所以我用了下面的公式,85(=255/3)作为转换因子。

r = (color_6bit >> 4) * FACTOR;
g = ((color_6bit >> 2) & 0x3) * FACTOR;
b = (color_6bit & 0x3) * FACTOR;

color_32bit = (r << 16)| (g << 8) | b;

这会正确转换颜色(白色 [0x3F -> 0xFFFFFF]、红色 [0x30 -> 0xFF0000] 等等)。

现在,这些颜色是要在电视上显示的字幕的文本和背景颜色,我们的测试流在视频中嵌入了引用调色板。当我将使用此公式获得的八位颜色绘制到屏幕上时,它与视频中出现的引用颜色并不完全匹配 - 它相当接近,但存在差异。

我是否正确地进行了转换,或者是否有任何标准算法可以将两位 rgb 颜色值转换为八位 rgb 值? DirectFB 能否在内部使用一些不同的表示(如 RGB565)?

就其值(value)而言,当因子 85 替换为 48(通过反复试验找到的值)时,颜色几乎完美匹配。

最佳答案

我所知道的唯一标准是 EGA - wikipedia 上有一个引用.

就其值(value)而言,6 位是一个非常小的空间——只有 64 个值。在 CPU 时间和内存方面进行转换的最快方法几乎可以肯定只是查找大小为 64 的数组中的值。特别是如果您有测试数据,这真的很容易 - 只需将正确的 64 个值从数组中的测试数据。这样您就不必担心它是否是标准 - 该标准正是适用于该系统的标准。

关于将两位颜色转换为八位颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5975564/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com