HarmonyOS 鸿蒙Next怎样将 【相册中选中】或【相机拍摄】的图片转成Base64编码呢?
HarmonyOS 鸿蒙Next怎样将 【相册中选中】或【相机拍摄】的图片转成Base64编码呢? 怎样将 【相册中选中】或【相机拍摄】的图片转成Base64编码呢?
搜到一个同步方法 getMediaBase64ByNameSync ,可惜把 图片的uri 传给 fileName 参数 报错说无效。
基本搞定 —— 但未测试将base64字符串解码成图像。
分两步:
1、设法读取文件内容:fs.readSync(file.fd, buf)
2、编码:new util.Base64Helper().encodeToStringSync(array, util.Type.MIME)
之前是因为【权限的原因】无法直接读取图片/文件内容,
采用的【折中方法】是将获取到的图片复制到沙盒中,从沙盒里读取就可以了。
感谢大家的帮助。
更多关于HarmonyOS 鸿蒙Next怎样将 【相册中选中】或【相机拍摄】的图片转成Base64编码呢?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
你好,编码那部分的array参数是怎么来的,能贴一下代码嘛,
请问从相机实时预览获取的画面流获取jpeg然后base64编码有解决吗?
async (frame: image.Image) => {
if (frame == undefined) {
return;
}
let imgComponent = await frame.getComponent(image.ComponentType.JPEG);
let jpegData = imgComponent.byteBuffer as ArrayBuffer;
let array = new Uint8Array(jpegData.slice(0, jpegData.byteLength));
let that = new util.Base64Helper();
let base64Str = 'data:image/jpeg;base64,' + that.encodeToStringSync(array, util.Type.BASIC);
console.info("base64: " + base64Str);
}
这种方式编码出来的无法还原打开成图片呢
需要首先转化为pixelMap。后来测试过了,可以还原成图片,不过我这种方法有点啰嗦。
获取到的图片如何添加一个时间水印?
这个应该是使用画布相关的接口了吧,没尝试过。
把图片读完扔给canvas,canvas调toDataUrl
这个方案试一下?
希望HarmonyOS能加强与其他品牌设备的兼容性,让更多人受益。
下面 都是有关Base64编码相关的帖子, 希望能找到一点线索
https://developer.huawei.com/consumer/cn/doc/search?val=Base64%E7%BC%96%E7%A0%81&type=forum
有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html
大家也都是在找办法,今晚试了一晚上,但还没解决。
在HarmonyOS(鸿蒙)系统中,将相册中选中的图片或相机拍摄的图片转为Base64编码,可以通过以下步骤实现:
-
获取图片数据:
- 如果是从相册中选择图片,可以使用鸿蒙系统提供的文件选择器API来获取图片的URI。
- 如果是相机拍摄,则在拍摄完成后会获得图片的存储路径或URI。
-
读取图片文件:
- 使用
File
类或相关API根据图片的URI或路径读取图片文件,将其转换为字节数组。
- 使用
-
编码为Base64:
- 鸿蒙系统提供了Base64编码的API,可以使用这些API将字节数组编码为Base64字符串。
示例代码(伪代码,具体实现需根据鸿蒙API调整):
// 假设图片数据已读取到byte[] imageData中
String base64EncodedString = Base64.encodeToString(imageData, Base64.DEFAULT);
注意:上述代码中的Base64.encodeToString
仅为示例,鸿蒙系统中可能使用不同的API进行Base64编码,请查阅鸿蒙官方文档获取准确方法。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,