如何将 RGB 颜色转换为 KML 十六进制颜色字符串?
How can I convert an RGB color to a KML hexadecimal color string?
在 MATLAB 中,我有由 x,y,z
坐标值和颜色定义的数据。现在我想使用 KLM 工具箱为 Google Earth 创建一个 kmz 文件。为了定义一个 Color 数组,我使用 'iconColor'
属性 输入 "Must be a valid hex color string input, in the style AABBGGRR".
将我的 RGB 颜色数组转换为十六进制颜色字符串的好方法是什么?如果我想使用不同的颜色图(jet 或 winter)怎么办?
built-in colormaps in MATLAB will give you matrices of RGB color triples that are scaled from 0 (lowest intensity) to 1 (highest intensity). To convert a single RGB triple to its KML color style equivalent(格式为AABBGGRR),步骤为:
- 将其从 0 缩放到 255。
- Flip BGR 命令。
- 在开头添加透明度值(0 表示完全透明,255 表示完全不透明)。
- 转换为
uint8
类型以确保您拥有 0 到 255 范围内的整数。
- 使用
dec2hex
转换为十六进制字符串。
- Reshape 将结果转换为 1×8 字符数组。
这是一个例子:
>> color = [1 1 0]; % The RGB triple for yellow
>> hexColor = reshape(dec2hex(uint8([255 255.*flip(color, 2)])).', 1, 8)
hexColor =
FF00FFFF
如果你想转换整个颜色图(即一个 N
×3 矩阵,每行一个 RGB 三元组),你可以像这样修改上面的代码:
>> N = 10; % Number of colors
>> map = jet(N); % 10-by-3 jet colormap
>> hexMap = reshape(dec2hex(uint8([255.*ones(N, 1) 255.*flip(map, 2)]).').', 8, []).'
hexMap =
FFAA0000
FFFF0000
FFFF5500
FFFFAA00
FFFFFF00
FFAAFF55
FF55FFAA
FF00FFFF
FF00AAFF
FF0055FF
在 MATLAB 中,我有由 x,y,z
坐标值和颜色定义的数据。现在我想使用 KLM 工具箱为 Google Earth 创建一个 kmz 文件。为了定义一个 Color 数组,我使用 'iconColor'
属性 输入 "Must be a valid hex color string input, in the style AABBGGRR".
将我的 RGB 颜色数组转换为十六进制颜色字符串的好方法是什么?如果我想使用不同的颜色图(jet 或 winter)怎么办?
built-in colormaps in MATLAB will give you matrices of RGB color triples that are scaled from 0 (lowest intensity) to 1 (highest intensity). To convert a single RGB triple to its KML color style equivalent(格式为AABBGGRR),步骤为:
- 将其从 0 缩放到 255。
- Flip BGR 命令。
- 在开头添加透明度值(0 表示完全透明,255 表示完全不透明)。
- 转换为
uint8
类型以确保您拥有 0 到 255 范围内的整数。 - 使用
dec2hex
转换为十六进制字符串。 - Reshape 将结果转换为 1×8 字符数组。
这是一个例子:
>> color = [1 1 0]; % The RGB triple for yellow
>> hexColor = reshape(dec2hex(uint8([255 255.*flip(color, 2)])).', 1, 8)
hexColor =
FF00FFFF
如果你想转换整个颜色图(即一个 N
×3 矩阵,每行一个 RGB 三元组),你可以像这样修改上面的代码:
>> N = 10; % Number of colors
>> map = jet(N); % 10-by-3 jet colormap
>> hexMap = reshape(dec2hex(uint8([255.*ones(N, 1) 255.*flip(map, 2)]).').', 8, []).'
hexMap =
FFAA0000
FFFF0000
FFFF5500
FFFFAA00
FFFFFF00
FFAAFF55
FF55FFAA
FF00FFFF
FF00AAFF
FF0055FF