HarmonyOS 鸿蒙Next如何获取像素点的R、G、B值

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

HarmonyOS 鸿蒙Next如何获取像素点的R、G、B值

如何获取像素点的R、G、B值,类似 Android Api,Color.red, Color.green、Color.blue 能够分离出R\G\B每个通道的值

2 回复
深色代码主题
复制
//,以下是ArkTS标准十六进制颜色代码,或者
  hexToRgb(hex:string){

    //hex格式为 1、#FFF 2、#FFFFFF  3、#FFFFFFFF  3 6 9位三种不同的情况

//所有进来的hex都要调用一次toLocaleString()

  //test1

    let blue = Color.Blue;

     hex = blue.toLocaleString()

    //test2

    hex = “#FFFFFFFF”

    if(hex.length === 9){

      //去掉除#外的前两位

      hex = “#”+hex.slice(3)

    }

    // 确保输入是有效的十六进制颜色代码

    if (!/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(hex)) {

      throw new Error(‘Invalid HEX color code’);

    }

    // 如果颜色代码是简写的(如 #FFF),则转换为 #FFFFFF

    if(hex.length === 4){

      hex = ‘#’ + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3];

    }

    const r = parseInt(hex.slice(1,3), 16);

    const g = parseInt(hex.slice(3,5), 16);

    const b = parseInt(hex.slice(5,7), 16);

    return [r, g, b];//rgb

  }

alpha -> Red->Green ->Blue

更多关于HarmonyOS 鸿蒙Next如何获取像素点的R、G、B值的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS 鸿蒙Next系统中,要获取屏幕像素点的R(红)、G(绿)、B(蓝)值,你可以通过以下步骤实现:

  1. 获取Canvas对象:首先,你需要获取一个Canvas对象,这通常可以通过自定义View或窗口的绘图回调方法中获得。

  2. 使用PixelCopy方法:HarmonyOS提供了PixelCopy类,用于从屏幕或Bitmap复制像素数据。你需要调用PixelCopy.request()方法,并传入目标Bitmap和目标Rect(通常是你感兴趣的像素区域),以及一个CopyCallback,在回调中处理像素数据。

  3. 处理像素数据:在CopyCallback的onCopyFinished()方法中,你可以检查复制是否成功,如果成功,则从Bitmap中读取像素数据。使用Bitmap.getPixel()方法传入x和y坐标来获取指定像素的ARGB值,然后利用Color类的方法分离出R、G、B值。

示例代码片段:

// 注意:示例代码仅为说明逻辑,实际需根据HarmonyOS API调整
PixelCopy.request(window, bitmap, rect, new CopyCallback() {
    @Override
    public void onCopyFinished(int copyResult) {
        if (copyResult == PixelCopy.SUCCESS) {
            int pixel = bitmap.getPixel(x, y);
            int red = Color.red(pixel);
            int green = Color.green(pixel);
            int blue = Color.blue(pixel);
        }
    }
});

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部