十六进制到BGR十六进制转换为Java中的KML颜色

时间:2012-09-21 16:04:07

标签: java colors hex kml rgb

我正在构建一个实用程序,它在基于Web的地图上显示地标,并将它们导出到KML以便在Google地球中使用。问题是我给出的十六进制值是标准RGB,而KML需要BGR(AABBGGRR,其中AA是alpha,但这里不相关)。对于像红色(FF0000)这样的简单颜色,转换很简单:0000FF。但是,我发现像7DCCFF(就像浅蓝色)之类的东西,简单地反转字符串不会在Google Earth中产生相同的颜色。我错过了一些明显明显的东西吗?

提前致谢!

2 个答案:

答案 0 :(得分:2)

我使用这两个PHP函数开发了一个简单的PHP工具来转换KML / RGB颜色:

function rgbToKml($color, $aa="ff"){
$rr = substr($color, 0, 2);
$gg = substr($color, 2, 2);
$bb = substr($color, 4, 2);
return $aa.$bb.$gg.$rr;
}
function kmlToRgb($color){
$rr = substr($color, 6, 2);
$gg = substr($color, 4, 2);
$bb = substr($color, 2, 2);
return $rr.$gg.$bb;
}

查看此处的示例:http://netdelight.be/kml/

答案 1 :(得分:1)

怎么样:

使用正则表达式(?<=\G..)分割

 String color = "123456";
 String[] list = color.split("(?<=\\G..)");
 for(String s : list) {
     System.out.println(s);
 }

这将为您输出:

12
34
56

现在你只需在list[0], list[1] and list[2]

之间进行一些交换

正则表达式(?<=\G..)匹配一个空字符串,该字符串包含最后一个匹配\G),后跟两个字符..之前(?<= )