HarmonyOS 鸿蒙Next中怎样把一张彩色图片变成灰白的图片,国家公祭日的那种
HarmonyOS 鸿蒙Next中怎样把一张彩色图片变成灰白的图片,国家公祭日的那种 怎样把一张彩色图片变成灰白的图片,国家公祭日的那种
课堂通过设置饱和度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实现。具体步骤如下:
-
获取图片资源:首先需要获取要处理的图片资源,可以通过
ResourceManager
或直接从文件系统中加载图片。 -
创建图像处理对象:使用
Image
类加载图片,并创建一个PixelMap
对象来表示图片的像素数据。 -
转换为灰度图:通过遍历
PixelMap
中的每个像素,将RGB值转换为灰度值。常用的灰度转换公式为:Gray = 0.299 * R + 0.587 * G + 0.114 * B
。将计算出的灰度值赋给每个像素的R、G、B分量,使其变为灰白效果。 -
保存或显示处理后的图片:将处理后的
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
组件加载图片后,调用PixelMap
的createPixelMap
方法获取像素数据。遍历每个像素点,将其RGB值转换为灰度值,公式为:gray = (R * 0.299 + G * 0.587 + B * 0.114)
,然后将RGB统一设置为该灰度值。最后,将处理后的像素数据重新渲染到Image
组件中即可实现灰白效果。