HarmonyOS 鸿蒙Next中怎样把一张彩色图片变成灰白的图片,国家公祭日的那种

HarmonyOS 鸿蒙Next中怎样把一张彩色图片变成灰白的图片,国家公祭日的那种 怎样把一张彩色图片变成灰白的图片,国家公祭日的那种

3 回复

课堂通过设置饱和度saturate来实现,参考demo:

@Entry
@Component
struct Index {
  @State message: string = 'Hello World'
  
  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .fontColor(Color.Red)
        Image($r("app.media.app_icon"))
          .autoResize(true)
          .width(100)
          .height(100)
          .saturate(0)
      }
    }
    .width('100%')
    .height('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next中怎样把一张彩色图片变成灰白的图片,国家公祭日的那种的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙Next)中,将一张彩色图片转换为灰白图片可以通过图像处理API实现。具体步骤如下:

  1. 获取图片资源:首先需要获取要处理的图片资源,可以通过ResourceManager或直接从文件系统中加载图片。

  2. 创建图像处理对象:使用Image类加载图片,并创建一个PixelMap对象来表示图片的像素数据。

  3. 转换为灰度图:通过遍历PixelMap中的每个像素,将RGB值转换为灰度值。常用的灰度转换公式为:Gray = 0.299 * R + 0.587 * G + 0.114 * B。将计算出的灰度值赋给每个像素的R、G、B分量,使其变为灰白效果。

  4. 保存或显示处理后的图片:将处理后的PixelMap保存为文件或直接显示在UI组件中。

以下是示例代码片段:

import image from '@ohos.multimedia.image';

async function convertToGrayscale(imageUri: string): Promise<image.PixelMap> {
    // 加载图片
    const imageSource = image.createImageSource(imageUri);
    const pixelMap = await imageSource.createPixelMap();

    // 获取像素数据
    const imageInfo = pixelMap.getImageInfo();
    const buffer = await pixelMap.getPixelBytes();

    // 转换为灰度图
    for (let i = 0; i < buffer.length; i += 4) {
        const r = buffer[i];
        const g = buffer[i + 1];
        const b = buffer[i + 2];
        const gray = Math.round(0.299 * r + 0.587 * g + 0.114 * b);
        buffer[i] = buffer[i + 1] = buffer[i + 2] = gray;
    }

    // 更新PixelMap
    await pixelMap.putPixelBytes(buffer);

    return pixelMap;
}

此代码将彩色图片转换为灰白图片,适用于国家公祭日等场景。

在HarmonyOS鸿蒙Next中,可以通过PixelMap类处理图像。使用Image组件加载图片后,调用PixelMapcreatePixelMap方法获取像素数据。遍历每个像素点,将其RGB值转换为灰度值,公式为:gray = (R * 0.299 + G * 0.587 + B * 0.114),然后将RGB统一设置为该灰度值。最后,将处理后的像素数据重新渲染到Image组件中即可实现灰白效果。

回到顶部