Java将0-255 int转换为rgb颜色

时间:2016-09-14 03:16:42

标签: java colors

start-process -FilePath D:\versioned\pf_trunk\deployment\environments\development\aws\deployment\awx\development\files\PublishMYPlanetFootprint.bat -Wait

颜色是什么并不重要,它总会返回 int colorInt = 41; int color = Color.HSBtoRGB(colorInt, 1f, 1f); System.out.print(color);

有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

float hue = 0.533f, saturation = 0.36667f, brightness = 0.535f;
int color = Color.HSBtoRGB(hue, saturation, brightness);
int red = (color >> 16) & 0xFF;
int green = (color >> 8) & 0xFF;
int blue = color & 0xFF;
System.out.println(color + " " + red + " " + green + " " + blue);

您传递的参数不正确,请注意参数的范围。

  

饱和度和亮度分量应该是浮点数   值介于0和1之间(数字范围为0.0-1.0)。色调   component可以是任何浮点数。这个号码的楼层   从中减去它以创建0到1之间的分数   然后将小数乘以360以产生色调角   在HSB颜色模型中。

     

HSBtoRGB返回的整数对颜色的值进行编码   在整数值的0-23位,与...使用的格式相同   方法getRGB。这个整数可以作为参数提供给   采用单个整数参数的颜色构造函数。

请查看此参考:https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html#HSBtoRGB(float,%20float,%20float)

答案 1 :(得分:0)

正如我在评论中指出的那样,色调,饱和度和亮度的值应该在0到1的范围内浮动(在Javadoc for this method中有解释)

此代码将显示具有特定饱和度和亮度的整个色轮(对于0到360度的每个度数):

public static void main(String[] args) {
    float saturation = 0.8f;
    float brightness = 0.7f;
    for (int degree = 0; degree < 360; degree++) {
        int color = Color.HSBtoRGB(degree / 360f, saturation, brightness);
        System.out.format("%3d  %6.4f  #%06x\n", degree, degree / 360f, color & 0xffffff);
    }
}