鸿蒙开发——根据背景图片来构建特定颜色的蒙版

效果图如下(文字部分马赛克处理):

最近突然发现网易云和QQ音乐这些图片上方的蒙版颜色不是固定的,而是跟着图片内容走的,想看看能不能在鸿蒙实现,最后凭借俺寻思之力寻思出了一套流程(有bug,有时候蒙版直接透明了,蒙版颜色数据是在的,就是不显示,希望是虚拟机的bug)

第一步、设置背景图/通过Image添加图片

如果要实现上图这样的效果,究竟是要在容器里放一个Image组件还是直接设置容器的背景图呢?我也考虑过这个问题,并且两种方式都试了试,在不考虑性能消耗的情况下实际流程差不多,开发中视情况灵活使用两种方式,这里我接下来就主要介绍设置背景图的方式

第二步、将图片转制为pixelMap对象

为了使用官方开放的各种图片处理API,我们最好先将图片转换为pixelMap对象,该格式的图片几乎能满足所有接口的要求

下面是我写的一个工具类

export default function getPixelMap(context: Context, imageName: string): image.PixelMap {
  const resourceMgr: resourceManager.ResourceManager = context.resourceManager
  const fileData: Uint8Array = resourceMgr.getRawFileContentSync(imageName)
  const buffer = fileData.buffer.slice(0)
  const imageSource: image.ImageSource = image.createImageSource(buffer)
  return imageSource.createPixelMapSync()

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值