HarmonyOS 鸿蒙Next 生产的二维码图保存到本地图片无效
HarmonyOS 鸿蒙Next 生产的二维码图保存到本地图片无效
将字符串 生成二维码保存本地后 图片显示未空
async createImageToSave() {
let options: generateBarcode.CreateOptions = {
scanType: scanCore.ScanType.QR_CODE,
height: 400,
width: 400
}
// 码图生成接口,成功返回PixelMap格式图片
generateBarcode.createBarcode(“华为”, options).then((pixelMap: image.PixelMap) => {
let buf = new ArrayBuffer(pixelMap.getPixelBytesNumber())
pixelMap.readPixelsToBuffer(buf).then((value) => {
console.log(“二维码:” + buf.byteLength)
CustomFileSaveManager.saveImageToPhoto(buf)
})
})
}
static async saveImageToPhoto(buffer: ArrayBuffer | string): Promise<void> {
const context = getContext() as common.UIAbilityContext; // 获取getPhotoAccessHelper需要的context
const helper = photoAccessHelper.getPhotoAccessHelper(context); // 获取相册管理模块的实例
const uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, ‘jpg’); // 指定待创建的文件类型、后缀和创建选项,创建图片或视频资源
const file = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
let r = await fs.write(file.fd, buffer);
await fs.close(file.fd);
showShortCenterToast(“图片保存成功”)
}
更多关于HarmonyOS 鸿蒙Next 生产的二维码图保存到本地图片无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
createImageToSave中image.PixelMap转ArrayBuffer的代码问题,修改createImageToSave如下可以正常保存图片:
import { BusinessError } from '[@kit](/user/kit).BasicServicesKit';
const imagePackerApi = image.createImagePacker();
async createImageToSave() {
let options: generateBarcode.CreateOptions = {
scanType: scanCore.ScanType.QR_CODE,
height: 400,
width: 400
}
// 码图生成接口,成功返回PixelMap格式图片
generateBarcode.createBarcode("华为", options).then((pixelMap: image.PixelMap) => {
let packOpts : image.PackingOption = { format:"image/jpeg", quality:98 };
imagePackerApi.packing(pixelMap, packOpts).then( async (data : ArrayBuffer) => {
// data 为打包获取到的文件流,写入文件保存即可得到一张图片
console.log("二维码:" + data.byteLength)
CustomFileSaveManager.saveImageToPhoto(data)
}).catch((error : BusinessError) => {
console.error('Failed to pack the image. And the error is: ' + error);
})
})
}
参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/image-encoding-V5#图片编码进文件流
更多关于HarmonyOS 鸿蒙Next 生产的二维码图保存到本地图片无效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next系统中,若遇到生产的二维码图保存到本地图片无效的问题,通常可能是以下几个原因导致的:
-
权限问题:确保应用已正确申请并获取了存储权限。没有存储权限,应用无法将二维码图保存到本地。
-
路径问题:检查保存图片时指定的路径是否正确,路径错误或路径所在目录不存在,将导致保存失败。
-
文件命名:确认文件名是否合法,包含非法字符或文件名过长都可能导致保存失败。
-
文件大小:如果二维码图过大,超出了系统或设备对单个文件的限制,也可能导致保存失败。
-
系统API调用错误:检查调用保存图片的系统API时,参数是否传递正确,API调用是否正确执行。
-
内存或资源不足:设备内存或资源不足时,也可能导致保存操作失败。
请逐一排查上述问题,确保所有条件都满足。如果二维码图依然无法保存到本地图片,可能是系统或应用的深层次问题,此时建议直接联系官网客服进行进一步的排查和解决。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。