HarmonyOS 鸿蒙Next中RGB和HSB如何转化

发布于 1周前 作者 gougou168 来自 鸿蒙OS

HarmonyOS 鸿蒙Next中RGB和HSB如何转化

现在有Android代码,有处理RGB和HSB的转化,我在鸿蒙中如何实现同样的功能?

2 回复


  const b = buffer2.readUInt8(0)
    const g = buffer2.readUInt8(1)
    const r = buffer2.readUInt8(2)
    const a = buffer2.readUInt8(3)
    console.log(TAG, r, g, b, a);
    let rightColor = `#${a.toString(16)}${r.toString(16).padStart(2,'0')}${g.toString(16).padStart(2,'0')}${b.toString(16).padStart(2,'0')}`
    console.info('---',rightColor)

更多关于HarmonyOS 鸿蒙Next中RGB和HSB如何转化的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS 鸿蒙Next系统中,RGB(红绿蓝)与HSB(色调、饱和度、亮度)之间的转换可以通过以下公式实现:

RGB到HSB转换

  1. 计算亮度(B): B = MAX(R, G, B) / 255

  2. 计算色调(H)

    • 如果Cmax = R:H = (60 × ((G - B) / (Cmax - Cmin))) + 360° (如果G < B)
    • 如果Cmax = G:H = (60 × ((B - R) / (Cmax - Cmin))) + 120°
    • 如果Cmax = B:H = (60 × ((R - G) / (Cmax - Cmin))) + 240°
    • 其中Cmax = MAX(R, G, B),Cmin = MIN(R, G, B)
  3. 计算饱和度(S)

    • 如果Cmax = 0:S = 0
    • 否则:S = (Cmax - Cmin) / Cmax

HSB到RGB转换

  1. 根据H值确定区间: 根据H值确定所属的颜色区间(红、黄、绿、青、蓝、紫)。

  2. 根据区间计算p, q, t: 根据H值在区间中的位置计算p, q, t的值。

  3. 根据p, q, t计算RGB: 根据所属区间及p, q, t值计算出对应的R, G, B值。

这些转换过程涉及复杂的数学运算,具体实现可查阅相关算法文档。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部