HarmonyOS 鸿蒙Next 为什么这个图片取色取得颜色一

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

HarmonyOS 鸿蒙Next 为什么这个图片取色取得颜色一

import image from '@ohos.multimedia.image';
import effectKit from '@ohos.effectKit';
import resourceManager from '@ohos.resourceManager';
// 初始背景色赋值
@State bgColor: string = "#F64D47";
// 顶部安全高度赋值
@State topSafeHeight: number = 0;
@State shColor: Color = Color.White;
@State sizeDate: number = 20;
@State rVal: number = 255;
@State gVal: number = 255;
@State bVal: number = 255;
@State aVal: number = 0.4;
@State rad: number = 40;
@State satVal: number = 0.8;
@State briVal: number = 1.5;
async aboutToAppear() {
  // 顶部安全高度适配
  // let windowHeight: window.Window = await window.getLastWindow(getContext(this));
  // await windowHeight.setWindowLayoutFullScreen(true);
  // this.topSafeHeight = px2vp(windowHeight.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM).topRect.height)

  // TODO 知识点:初始化页面获取第一张图片的颜色
  const context = getContext(this);
  const resourceMgr: resourceManager.ResourceManager = context.resourceManager;
  const fileData: Uint8Array = await resourceMgr.getMediaContent(this.imgData[0]);
  const buffer = fileData.buffer as ArrayBuffer;
  const imageSource: image.ImageSource = image.createImageSource(buffer);
  const pixelMap: image.PixelMap = await imageSource.createPixelMap();

  // TODO 知识点:智能取色器接口使用,初始化背景色
  effectKit.createColorPicker(pixelMap, (err, colorPicker) => {
    let color = colorPicker.getMainColorSync();
    // 将取色器选取的color示例转换为十六进制颜色代码
    this.bgColor = "#" + color.alpha.toString(16) + color.red.toString(16) + color.green.toString(16) + color.blue.toString(16)

    console.info('===初始化页面获取第一张图片的颜色==', this.bgColor)
  })
}

用的api11,我想在swiper 里面实时取到图片的颜色 更改背景色 但是现在无论是初始化还是 轮播图滚动后颜色一直都是"#000"。

求大佬解答


更多关于HarmonyOS 鸿蒙Next 为什么这个图片取色取得颜色一的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

问题解决了。真机可以。预览无法获取到context.resourceManager

更多关于HarmonyOS 鸿蒙Next 为什么这个图片取色取得颜色一的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


ARGB里面 有一个是空的,toString失败了。你打印下日志应该可以看出

是的 let color = colorPicker.getMainColorSync(); 这个 color

console.info('=color==', JSON.stringify(color))

打印出来是 {"red":0,"green":0,"blue":0,"alpha":0} 是颜色获取的不对吗?还是什么原因?

在HarmonyOS鸿蒙Next中,图片取色功能可能受到多种因素影响,导致取色结果与预期不符。首先,图片的分辨率和色彩深度会影响取色精度。低分辨率或低色彩深度的图片可能导致取色不准确。其次,图片的压缩格式和压缩质量也会影响取色结果。例如,JPEG格式的图片在压缩过程中可能会丢失部分色彩信息,导致取色偏差。此外,取色算法本身的精度和实现方式也是关键因素。不同的取色算法可能对同一图片产生不同的取色结果。最后,设备的显示效果和色彩校准也会影响取色结果。不同设备的屏幕色彩表现可能存在差异,导致取色结果不一致。综上所述,图片取色结果受多种因素影响,包括图片质量、取色算法和设备显示效果等。

在HarmonyOS鸿蒙Next中,图片取色取得颜色一的原因可能是由于系统默认的取色算法选择了图片中某个特定区域的颜色。这通常基于该区域在图片中的显著性或色彩分布。如果您需要更精确的取色,建议使用专业的图像处理工具或调整取色算法的参数。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!