2012-09-21 18 views
0

我正在構建一個實用工具,它在基於Web的地圖上創建地標並將它們導出到KML以用於Google地球。問題是我給出的十六進制值是標準RGB,而KML需要BGR(AABBGGRR,其中AA是alpha,但在這裏不相關)。對於簡單的顏色,如紅色(FF0000),轉換很簡單:0000FF。然而,我發現像7DCCFF(就像淺藍色),簡單地反轉字符串不會在Google Earth中產生相同的顏色。我在這裏錯過了明顯的東西嗎?十六進制到BGR在Java中用於KML顏色的十六進制轉換

在此先感謝!

回答

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]

正則表達式一些swap (?<=\G..) ma tches有後跟兩個字符..之前((?<=)

+0

是的,你的回答讓我意識到我在做什麼錯的,此外爲什麼它使用像黃色這樣的顏色。反轉字符串交換單個顏色的值。謝謝! – robhyx

2

我developped一個簡單的PHP工具來轉換KML/RGB顏色最後一場比賽\G)一個空字符串,使用這兩個PHP函數:

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/