将6位颜色代码每隔两位分成三部分(R/G/B),将每部分的2位从16进制转换为10进制,颜色过渡每次R减4n,G减2n,B减1n,试试看效果,不行的话调整一下减幅的比例4:2:1

解决方案 »

  1.   

    或者直接R/2, G/2, B/2,然后再组合在一起
      

  2.   

    $s = "#E3EBFE";
    $c = hexdec(substr($s,1));
    $r = ($c>>16) & 0xff;
    $g = ($c>>8) & 0xff;
    $b = $c & 0xff;printf("%s %X %X %X",$s,$r,$g,$b);
      

  3.   

    原来是PHP版的,不懂,来段客户端的
    -----------------------------------------
    <script language=jscript>function getAvgColor(color1,color2)
    {
    var r1 = parseInt("0x" + color1.substring(1,3))
    var g1 = parseInt("0x" + color1.substring(3,5))
    var b1 = parseInt("0x" + color1.substring(5,7))var r2 = parseInt("0x" + color2.substring(1,3))
    var g2 = parseInt("0x" + color2.substring(3,5))
    var b2 = parseInt("0x" + color2.substring(5,7))var r = Math.round((r1 + r2)/2)
    var g = Math.round((g1 + g2)/2)
    var b = Math.round((b1 + b2)/2) return "#" + r.toString(16) + g.toString(16) + b.toString(16)
    }
    </script>
    <input type="button" onclick="alert(getAvgColor('#E3EBFE','#B7CAF2'))" value="click">
      

  4.   

    我写的:
    <?
    echo "
    <form action=$PHP_SELF methord=post>
    <input type=text name=a><input type=text name=b><br><input type=submit value='O K'>
    </form>
    ";
    for($ii=0; $ii<6; $ii=$ii+2) {
    $a1=substr($a,$ii,2);
    $b1=substr($b,$ii,2);
    $c=dechex((hexdec($a1)+hexdec($b1))/2);
    echo $c;
    }