【问题标题】:Argb decoposition / recomposition issueArgb 分解/重组问题
【发布时间】:2017-10-27 09:55:42
【问题描述】:
public static int[] getIntARGB(int argb){
    int result[] = new int[4];
    result[0] = (argb & 0xff000000) >> 24;
    result[1] = (argb & 0x00FF0000) >> 16;
    result[2] = (argb & 0x0000FF00) >> 8;
    result[3] = (argb & 0x000000FF);

    return result;
}
public static int getARBGInt(int a, int r, int g, int b) {
    return ((a << 24) | 0xFF) + ((r << 16) | 0xFF) + ((g << 8) | 0xFF) + (b | 0xFF);
}

你知道为什么如果我取一个 argb int 然后分解它并重新放置它,它不会返回相同的值吗?

这两个(或两个)函数中的一个在某种程度上搞砸了,但我不知道为什么(当然,如果之前但如果有是个问题我已经不能工作了x))

【问题讨论】:

  • 你不会简单地分解和放置它。想想| 0xFF 在做什么,以及你把这些额外的1s 放在哪里
  • 哦,是的,非常感谢我为什么要这样做>

标签: java image argb


【解决方案1】:
public static int getARBGInt(int a, int r, int g, int b) {
    return (a << 24) + (r << 16) + (g << 8) + b;
}

我不小心把“|0xFF”放在&lt;&lt; ...的结果上

【讨论】:

  • 很高兴你能解决你的问题;)你总是通过自己发现问题而不是别人给你正确的代码来学习更多!
猜你喜欢
  • 1970-01-01
  • 2010-10-31
  • 2018-01-18
  • 1970-01-01
  • 2014-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多