【问题标题】:How can I extract ARGB from a Color and convert them to byte components?如何从颜色中提取 ARGB 并将它们转换为字节分量?
【发布时间】:2011-08-31 01:11:13
【问题描述】:

我在 Java/Android 中工作,我想采用 0xFFFFFFFF int 颜色并将其分成 4 个字节,分别表示红色、绿色、蓝色和 alpha。我知道Color 有提取特定颜色值的方法,但它以int 的形式提供它们。我浏览了SDK,发现Color.red(color)方法和(color >> 16) & 0xFF是一样的,老实说我不知道​​这是什么意思,但我想我可以以某种方式使用它。

我试过了

byte red = (byte)Color.red(color);

但这似乎不起作用。重点是我可以使用该方法将值输入 OpenGL

glColorPointer(4, GL_UNSIGNED_BYTE, 4, myColors);

myColors 是一个字节[]。

任何帮助/提示/点将不胜感激。

【问题讨论】:

    标签: java android


    【解决方案1】:

    如果 Color 具有提取特定颜色值的方法,则将 Red 提取为 int 并使其成为 Hex,然后是 Green,然后是 Blue。您可能还想提取 alpha。使用Integer.toHexString(int),您可以打印 int 的十六进制值。 (color >> 16) & 0xFF 将红色(通过位移和添加)定位到非 alpha 颜色的 6 个十六进制数字中的前 2 个。非 alpha 颜色 RBG 由 3 个字节的信息组成。每个字节都是一种颜色,顺序为 R(Red) B(Blue) G(Green) 。 0xFF 是一个字节,如果设置为红色则表示颜色为全红色等

    【讨论】:

    • 我知道它由字节组成,但我在将其拆分为 4 个字节 (argb) 时遇到问题。除了将 int 转换为字符串然后再转换回字节之外,没有其他方法吗?这似乎比需要的工作多得多。
    • 尝试位移所有的颜色,比如红色
    猜你喜欢
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    • 2013-03-13
    • 1970-01-01
    • 2022-10-21
    • 2015-06-02
    相关资源
    最近更新 更多