我正在構建一個實用工具,它在基於Web的地圖上創建地標並將它們導出到KML以用於Google地球。問題是我給出的十六進制值是標準RGB,而KML需要BGR(AABBGGRR,其中AA是alpha,但在這裏不相關)。對於簡單的顏色,如紅色(FF0000),轉換很簡單:0000FF。然而,我發現像7DCCFF(就像淺藍色),簡單地反轉字符串不會在Google Earth中產生相同的顏色。我在這裏錯過了明顯的東西嗎?十六進制到BGR在Java中用於KML顏色的十六進制轉換
在此先感謝!
我正在構建一個實用工具,它在基於Web的地圖上創建地標並將它們導出到KML以用於Google地球。問題是我給出的十六進制值是標準RGB,而KML需要BGR(AABBGGRR,其中AA是alpha,但在這裏不相關)。對於簡單的顏色,如紅色(FF0000),轉換很簡單:0000FF。然而,我發現像7DCCFF(就像淺藍色),簡單地反轉字符串不會在Google Earth中產生相同的顏色。我在這裏錯過了明顯的東西嗎?十六進制到BGR在Java中用於KML顏色的十六進制轉換
在此先感謝!
如何:
分裂與正則表達式(?<=\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有後跟兩個字符(..
)之前((?<=)
)
我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/
是的,你的回答讓我意識到我在做什麼錯的,此外爲什麼它使用像黃色這樣的顏色。反轉字符串交換單個顏色的值。謝謝! – robhyx