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,可以使用ResourceManager和ImageSource类。
-
获取图片的高、宽信息:
- 首先通过
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; - 首先通过
-
将图片转换为PixelMap:
- 使用
ImageSource的createPixelmap方法可以直接将图片转换为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中正确配置资源路径。

