您的位置:首页 > 编程语言 > Java开发

java后台如何将rgb与16进制颜色进行转换

2017-06-02 14:32 836 查看

首先将rgb颜色转换成16进制

//**将rgb色彩值转成16进制代码**
public  String convertRGBToHex(int r, int g, int b) {
String rFString, rSString, gFString, gSString,
bFString, bSString, result;
int red, green, blue;
int rred, rgreen, rblue;
red = r / 16;
rred = r % 16;
if (red == 10) rFString = "A";
else if (red == 11) rFString = "B";
else if (red == 12) rFString = "C";
else if (red == 13) rFString = "D";
else if (red == 14) rFString = "E";
else if (red == 15) rFString = "F";
else rFString = String.valueOf(red);

if (rred == 10) rSString = "A";
else if (rred == 11) rSString = "B";
else if (rred == 12) rSString = "C";
else if (rred == 13) rSString = "D";
else if (rred == 14) rSString = "E";
else if (rred == 15) rSString = "F";
else rSString = String.valueOf(rred);

rFString = rFString + rSString;

green = g / 16;
rgreen = g % 16;

if (green == 10) gFString = "A";
else if (green == 11) gFString = "B";
else if (green == 12) gFString = "C";
else if (green == 13) gFString = "D";
else if (green == 14) gFString = "E";
else if (green == 15) gFString = "F";
else gFString = String.valueOf(green);

if (rgreen == 10) gSString = "A";
else if (rgreen == 11) gSString = "B";
else if (rgreen == 12) gSString = "C";
else if (rgreen == 13) gSString = "D";
else if (rgreen == 14) gSString = "E";
else if (rgreen == 15) gSString = "F";
else gSString = String.valueOf(rgreen);

gFString = gFString + gSString;

blue = b / 16;
rblue = b % 16;

if (blue == 10) bFString = "A";
else if (blue == 11) bFString = "B";
else if (blue == 12) bFString = "C";
else if (blue == 13) bFString = "D";
else if (blue == 14) bFString = "E";
else if (blue == 15) bFString = "F";
else bFString = String.valueOf(blue);

if (rblue == 10) bSString = "A";
else if (rblue == 11) bSString = "B";
else if (rblue == 12) bSString = "C";
else if (rblue == 13) bSString = "D";
else if (rblue == 14) bSString = "E";
else if (rblue == 15) bSString = "F";
else bSString = String.valueOf(rblue);
bFString = bFString + bSString;
result = "#" + rFString + gFString + bFString;
return result;

}


将hsv颜色转换成rgb格式

//hsv格式颜色转rgb格式
public float[] hsb2rgb(float[] hsb) {
float[] rgb= new float[3];
//先令饱和度和亮度为100%,调节色相h
for(int offset=240,i=0;i<3;i++,offset-=120) {
//算出色相h的值和三个区域中心点(即0°,120°和240°)相差多少,然后根据坐标图按分段函数算出rgb。但因为色环展开后,红色区域的中心点是0°同时也是360°,不好算,索性将三个区域的中心点都向右平移到240°再计算比较方便
float x=Math.abs((hsb[0]+offset)%360-240);
//如果相差小于60°则为255
if(x<=60) rgb[i]=255;
//如果相差在60°和120°之间,
else if(60<x && x<120) rgb[i]=((1-(x-60)/60)*255);
//如果相差大于120°则为0
else rgb[i]=0;
}
//在调节饱和度s
for(int i=0;i<3;i++)
rgb[i]+=(255-rgb[i])*(1-hsb[1]);
//最后调节亮度b
for(int i=0;i<3;i++)
rgb[i]*=hsb[2];
return rgb;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  rgb hsv color
相关文章推荐