如何将比特数从24位减少到0到8位之间,并分配给红、绿、蓝三种颜色的比特
知道吗?
发布于 2022-12-01 07:06:18
这就是所谓的“色彩量化”。您有16.777.216种颜色,您希望将它们映射到一个较小的数字(2到256)。
步骤1:选择要使用的颜色。首先是他们的号码,然后是颜色本身。您需要选择是否所有图像的颜色是固定的,或者如果它们根据图像进行更改(您将需要随每个图像一起发布一个颜色调色板)。
第二步:用选择中的颜色替换图像的颜色。
如果颜色是固定的,并且您想保持非常简单,您可以使用每个通道1位(总共8种颜色)或每条通道2位(总共64种颜色)。
稍微复杂一点,以任何可能的方式对每个通道0、51、102、153、204、255使用这些值,从而导致216种不同的颜色组合。创建一个将每个颜色组合与索引相关联的表。该索引需要8位(有一些备用)。这被称为“网络安全调色板”(这使我回到1999年底)。现在,您可以进行替换了:将图像中的每个像素取下来,量化的颜色可以被发现为x*6//256*51 (//是整数除法)。
如果您想要更好看的调色板,请查找中值切割算法。
发布于 2022-12-01 06:41:35
只保留像素红色通道中最重要的部分。对于绿色和蓝色的通道也要这样做。然后使用C++的位操作操作将这些位值移动到一个字节中。有多种方法可以这样做。例如,在互联网上搜索一个例子中的"rgb332“(其中保存了3个红色比特、3个绿色比特和2个蓝色比特)。
https://stackoverflow.com/questions/74637747
复制相似问题