我必须从rgb转换为hsb,以便对图像执行直方图均衡。我已将它转换回rgb,我得到的负值如-158435。任何人都可以帮我理解如何将其转换为颜色,以便我可以将其设置为我的像素?感谢
答案 0 :(得分:1)
只需使用位移。它有效。
int rgb = 0x00F15D49;
int r = (rgb >>> 16) & 0xFF;
int g = (rgb >>> 8) & 0xFF;
int b = rgb & 0xFF;
然后使用此方法
Color.RGBtoHSB(int r, int g, int b, float[] hsbvals);
喜欢这样:
float[] hsb = Color.RGBtoHSB(r, g, b, null);
要将其转换回来,只需使用其他方法(编辑,你是对的):
int rgb = Color.HSBtoRGB(hsb[0], hsb[1], hsb[2]);
System.out.println(Integer.toHexString(rgb));
答案 1 :(得分:0)
出现负值是因为您将颜色存储为ARGB(Alpha Red Green Blue)。 然后,alpha通道通常只是100%不透明,即255 = 0xFF。
因此,当颜色转换为32位int时,它显示为负。
示例:不透明的黑色= ARGB(255,0,0,0)= 0xFF000000 = -16777216