gpt4 book ai didi

visual-c++ - 从整数值中提取 rgb 颜色分量

转载 作者:行者123 更新时间:2023-12-01 07:48:18 25 4
gpt4 key购买 nike

如果有一个整数值,例如。 86 那么我如何从这个整数值中提取 r、g、b 分量......?
我正在开发 Visual C++ 2008 速成版。
谢谢..

最佳答案

通常(并且我通常重复,因为您没有在问题中指定太多内容)颜色被打包在一个 4 字节的整数中,并带有 RGBA 组件。

你需要做的是掩码和移位,例如:

int color = 0xRRGGBBAA;

u8 red = (color & 0xFF000000) >> 24;
u8 green = (color & 0x00FF0000) >> 16;
u8 blue = (color & 0x0000FF00) >> 8;

这假定我指定的编码类型,但可以根据您的进行修改。

编辑:
在您的示例中,您谈到了 0-255 值。不清楚组件是否为 2 位大小(每个组件 4 个强度值)。

在这种情况下,方法仍然保持不变,但您将只有几种颜色:
u8 color = 86;

// so you take 2 bits and multiply by 64 to possibly have intensities: 0, 64, 128, 192
u8 red = ((color & 0xC0) >> 6) * 64;
u8 green = ((color & 0x30) >> 4) * 64;
u8 blue = ((color & 0x0C) >> 2) * 64;

EDIT2: 也许你的颜色是用调色板索引的,在这种情况下,你应该有一个存储调色板本身的数组,你从文件中读取的字节应该是存储在其他地方的颜色的索引。

关于visual-c++ - 从整数值中提取 rgb 颜色分量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2342114/

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