java 获取两颜色值的中间值

有时候做项目的时候,需要动态的计算两颜色值之间的中间值,然后做出一定的效果,那么该怎么求呢?

 下面说说做法:

简单而言,就是需要对两颜色之间的求和再取平均值,但是直接使用color.parseInt再求和除2是不对的,因为直接求和会导致颜色不对,具体原因出自相加求和颜色退位。

那么,该如何算呢,贴下代码:

public static String getMiddleColor(String color1, String color2) {
    if (color1.contains("#") && color2.contains("#") && color1.length() == color2.length() && color2.length() == 7) {
        String tempColor1 = color1.replace("#", "");
        String tempColor2 = color2.replace("#", "");
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append("#");
        for (int i = 0; i < tempColor1.length(); i++) {
            String tempResult = (changeHex2Int(String.valueOf(tempColor1.charAt(i)))
                    + changeHex2Int(String.valueOf(tempColor2.charAt(i)))) / 2 + "";
            stringBuffer.append(changeInt2Hex(tempResult));
        }
        return stringBuffer.toString();
    }
    return "";
}
简单的说就是根据6位的颜色直接逐个逐个的求和再除二,那么这个颜色值就是对的了。

private static int changeHex2Int(String temp) {
    BigInteger srch = new BigInteger(temp, 16);
    return Integer.valueOf(srch.toString());
}

private static String changeInt2Hex(String temp) {
    BigInteger srch = new BigInteger(temp, 10);
    return Integer.toHexString(Integer.parseInt(srch.toString()));
}
如此一来,就能实现一个比较困难的需求,用曲线救国的方式实现我们的功能要求了。

感谢你的浏览。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值