HarmonyOS鸿蒙Next中如何获取resources/media下图片的信息,如图片高、宽?以及如何转pixelmap?

HarmonyOS鸿蒙Next中如何获取resources/media下图片的信息,如图片高、宽?以及如何转pixelmap? 如果获取resources/media下图片的信息,如图片高、宽? 如何转pixelmap

3 回复

参考如下demo来获取图片资源的尺寸信息以及了解相关转pixelmap操作:

import image from '@ohos.multimedia.image'

@Entry
@Component
struct Index {
  @State message: string = '点击获取图片尺寸';
  @State imagePixelMap: PixelMap | undefined = undefined;
  @State imageWidth: number = -1;
  @State imageHeight: number = -1;

  build() {
    Row() {
      Column() {
        Button(this.message)
          .fontSize(30)
          .width(350)
          .height(150)
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
            getContext(this).resourceManager.getMediaContent($r("app.media.ic_app_background")).then((data) => {
              let arrayBuffer = data.buffer.slice(data.byteOffset, data.byteLength + data.byteOffset)
              let imageSource: image.ImageSource = image.createImageSource(arrayBuffer);
              imageSource.getImageInfo((err, value) => {
                //获取图片资源的尺寸
                console.log(`图片的尺寸为:width:${value.size.width}height:${value.size.height}`)
                if (err) {
                  return;
                }
                //转PixelMap
                let opts: image.DecodingOptions =
                  { editable: true, desiredSize: { height: value.size.height, width: value.size.width } };
                imageSource.createPixelMap(opts, (err, pixelMap) => {
                  this.imagePixelMap = pixelMap
                  this.imagePixelMap.getImageInfo().then((value) => {
                    this.imageWidth = value.size.width
                    this.imageHeight = value.size.height
                  })
                })
              })
            })
          })
        Image(this.imagePixelMap).width(300).height(400)
        Text(`图片尺寸信息:width: ${this.imageWidth}, height: ${this.imageHeight}`)
      }
    }
  }
}

更多关于HarmonyOS鸿蒙Next中如何获取resources/media下图片的信息,如图片高、宽?以及如何转pixelmap?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,获取resources/media目录下图片的高、宽信息以及将其转换为PixelMap,可以使用ResourceManagerImageSource类。

  1. 获取图片的高、宽信息:

    • 首先通过ResourceManager获取图片的资源ID。
    • 使用ImageSource类创建图片源对象,然后通过createPixelmap方法获取PixelMap对象。
    • 通过PixelMap对象的getImageInfo方法获取图片的高、宽信息。
    import image from '[@ohos](/user/ohos).multimedia.image';
    import resourceManager from '[@ohos](/user/ohos).resourceManager';
    
    let resManager = resourceManager.getResourceManager();
    let imageResId = resManager.getMediaResourceId('your_image_name');
    let imageSource = image.createImageSource(imageResId);
    let pixelMap = await imageSource.createPixelmap();
    let imageInfo = pixelMap.getImageInfo();
    let width = imageInfo.size.width;
    let height = imageInfo.size.height;
    
  2. 将图片转换为PixelMap:

    • 使用ImageSourcecreatePixelmap方法可以直接将图片转换为PixelMap对象。
    import image from '[@ohos](/user/ohos).multimedia.image';
    import resourceManager from '[@ohos](/user/ohos).resourceManager';
    
    let resManager = resourceManager.getResourceManager();
    let imageResId = resManager.getMediaResourceId('your_image_name');
    let imageSource = image.createImageSource(imageResId);
    let pixelMap = await imageSource.createPixelmap();
    

在HarmonyOS鸿蒙Next中,可以通过ResourceManager获取resources/media下的图片信息。首先使用ResourceManager.getMediaContent获取图片资源,然后通过Image.Source.create创建ImageSource对象,使用getImageInfo方法获取图片的高度和宽度。将图片转为PixelMap可以使用ImageSource.createPixelmap方法。具体代码示例如下:

ResourceManager resManager = getResourceManager();
RawFileEntry rawFileEntry = resManager.getMediaContent("your_image_name");
ImageSource imageSource = Image.Source.create(rawFileEntry.openRawFile(), null);
ImageInfo imageInfo = imageSource.getImageInfo();
int width = imageInfo.size.width;
int height = imageInfo.size.height;
PixelMap pixelMap = imageSource.createPixelmap(null);

确保在config.json中正确配置资源路径。

回到顶部