HarmonyOS 鸿蒙Next图片路径地址转换
HarmonyOS 鸿蒙Next图片路径地址转换
你需要将所支持格式的存档图片解码成统一的PixelMap,参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/image-decoding-V5
再将PixelMap编码成不同格式的存档图片,pixelmap使用imagePacker.packing的方法转成arraybuffer再编码Base64,参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/image-encoding-V5
参考demo:
let packOpts: image.PackingOption = { format: "image/jpeg", quality: 98 };
let imagePackerApi = image.createImagePacker();
const context: Context = getContext(this);
const resourceMgr = context.resourceManager;
let imageBuffer = await resourceMgr.getMediaContent($r('app.media.ic_low'));
const imageSource: image.ImageSource = image.createImageSource(imageBuffer.buffer);
let decodingOptions: image.DecodingOptions = {
editable: true,
desiredPixelFormat: 3,
rotate: 90
}
// 创建pixelMap并进行简单的旋转和缩放
imageSource.createPixelMap(decodingOptions).then((pixelMap: PixelMap) => {
this.pixelMap = pixelMap
// pixelmap 转base64 先要有一个packing的过程
imagePackerApi.packing(pixelMap, packOpts).then((data: ArrayBuffer) => {
let base64Str = buffer.from(data).toString('base64')
let resultBase64Str = "data:image/png;base64," + base64Str
this.resultBase64Str = resultBase64Str
}).catch((error: BusinessError) => {
console.error('Failed to pack the image. And the error is: ' + error);
})
pixelMap.release();
})
//重点提示: pixelmap转base64 不能直接转,先要加一个packing的过程,下面的方法是一个错误的实例,转出来的base64字符串不对。
let pixelMap = await imageSource.createPixelMap(opts);
console.log("pixelMap.getPixelBytesNumber():" + pixelMap.getPixelBytesNumber())
let arrayBuffer = new ArrayBuffer(pixelMap.getPixelBytesNumber());
pixelMap.readPixelsToBuffer(arrayBuffer)
console.log("arrayBuffer" + arrayBuffer)
let base64Str = buffer.from(arrayBuffer).toString(Constants.BASE_64);
let resultBase64Str = "data:image/png;base64," + base64Str
参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/app-sandbox-directory-V5
更多关于HarmonyOS 鸿蒙Next图片路径地址转换的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS(鸿蒙)系统中,处理图片路径地址转换通常涉及文件系统访问权限和路径格式转换。鸿蒙系统基于Linux内核,其文件系统路径格式与Android类似,但具体实现可能有所不同。
若你正在开发鸿蒙应用,并需要将图片路径从一种格式转换为另一种(例如,从相对路径转换为绝对路径,或从设备存储路径转换为应用私有存储路径),你可以使用鸿蒙提供的API来实现。
鸿蒙系统提供了丰富的文件访问API,如File
类、Uri
类以及相关的文件访问权限设置。你可以通过这些API来获取图片的绝对路径,或者将路径转换为适合在鸿蒙系统中使用的格式。
例如,如果你有一个相对路径的图片,你可以使用File
类的getAbsolutePath()
方法来获取其绝对路径。如果你需要处理来自外部存储的图片,确保你的应用已经获得了相应的文件访问权限。
请注意,鸿蒙系统的路径转换可能受到应用沙箱机制的限制,因此你需要确保你的应用具有访问目标路径的权限。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。