HarmonyOS 鸿蒙Next 如何将app.media.app_icon,转换为ImageBitmap

HarmonyOS 鸿蒙Next 如何将app.media.app_icon,转换为ImageBitmap 看了社区的一个帖子,只是把media下的文件转为PixelMap

想问一下大家,PixelMap如何再转为ImageBitmap呀?

我想实现通过Canvas来展示一张图片!代码如下:

import { image } from '@kit.ImageKit'

@Entry
@Component
struct Index {
  private settings: RenderingContextSettings = new RenderingContextSettings(true)
  private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
  // private img: ImageBitmap = new ImageBitmap("image/main_nav_bg.jpg")

  private img_1?: PixelMap
  private img_2?: ImageBitmap

  aboutToAppear(): void {
    try {
      // 媒体文件字节数组
      getContext().resourceManager.getMediaContent($r('app.media.startIcon').id, (error, value:ArrayBuffer) => {
        let opts: image.InitializationOptions = {
          editable: true,
          pixelFormat: 3,
          size: { height: 300, width: 300 }
        }
        // 创建PixelMap
        image.createPixelMap(value, opts).then((pixelmap) => {
          // TODO 这个位置如何把PixelMap转换为ImageBitmap??
        })
      });
    } catch (error) {
      console.error(`callback getMediaContent failed, error code: ${error.code}, message: ${error.message}.`)
    }
  }

  build() {
    Column() {
      Canvas(this.context)
        .width('100%')
        .height('50%')
        .backgroundColor(Color.Transparent)
        .onReady(() => {
          this.context.drawImage(this.img_2, 0, 0, 50, 60, 0, 0, 50, 60)
        })
    }
    .backgroundColor('#c0c0c0')
    .width('100%')
    .height('100%')
    .justifyContent(FlexAlign.Start)
  }
}

更多关于HarmonyOS 鸿蒙Next 如何将app.media.app_icon,转换为ImageBitmap的实战教程也可以访问 https://www.itying.com/category-93-b0.html

11 回复

原来可以这样解决啊,学会了

更多关于HarmonyOS 鸿蒙Next 如何将app.media.app_icon,转换为ImageBitmap的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


所以还是没办法把PixelMap转换为ImageBitmap吗?

用ImageBitmap的构造函数传入PixelMap对象后,width、height都是undefined

我的PixelMap对象是通过ImageSource.createPixmap()函数拿到的, 使用PixelMap.getImageInfo.size可以拿到正确的宽高,但是转换成ImageBitmap后,使用ImageBitmap.width 、height宽高都是undefined了

上面有个评论,可以看看对你有没有帮助,我按照那个老哥的办法是行的通的,

谢谢,我看到了,但是那个是用PixelMap作为this.context.drawImage()函数的参数了把,而不是用ImageBitmap。所以意思是改用PixelMap放弃ImageBitmap吗?

可以在pages文件夹同级新建一个common文件夹,图片资源放在这个common中。然后通过ImageBitmap接口转化。

ImageBitmap

找HarmonyOS工作还需要会Flutter技术的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:BV1S4411E7LY/?p=17

将app.media.app_icon,转换为ImageBitmap就是为了不在pages文件下存放图片,但是现在看来,好像实现不了~

drawImage()方法是支持PixelMap类型的,但是图片并未展示出来

遇到了同样的问题,你解决了吗?

没解决~我把图片放在ets文件夹下面的子文件夹了,

回到顶部