如何存储图片的 Buffer 到沙盒为一个 jpeg/png 文件,并使用 Image 组件进行访问。

某些图片是 c++ 层绘制来的,需要保存到沙盒并在合适的时候进行展示。

使用 fs 对 ArrayBuffer 保存并读取再重新生成 pixelMap 的方式已知,但过程较为复杂。

希望可以保存成图片文件后使用 filePath 的方式进行访问。

HarmonyOS
2024-05-08 23:17:21
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
开心的兔子
//模拟从c++侧的arraybuffer已经到js侧 
 
let context = getContext(this) as common.UIAbilityContext 
//此处context在页面侧用该方法获取, 
let filePath = context.filesDir + “/test.png” 
//通过rawfile里的图片模拟c++侧过来的arraybuffer 
let arrayBuff = context.resourceManager.getRawFileContentSync(“icon.png”).buffer 
console.log(‘testTag-----’,arrayBuff) 
//文件操作 
let file = fs.openSync(filePath,fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE) 
fs.writeSync(file.fd,arrayBuff) 
//获取uri,使用uri来通过image展示,因为image组件目前不支持直接用路径 
this.uri = fileUri.getUriFromPath(filePath) 
console.log(‘testTag-----’,filePath)

当前暂且只有根据buffer创建imageSource或者pixelMap,再用imagePacke编码,可参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-image-0000001821001457

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/image-encoding-0000001774120518#ZH-CN_TOPIC_0000001774120518__%E5%9B%BE%E7%89%87%E7%BC%96%E7%A0%81%E8%BF%9B%E6%96%87%E4%BB%B6%E6%B5%81

分享
微博
QQ
微信
回复
2024-05-09 12:21:41
相关问题
png图片使用Image组件加载出现锯齿
2037浏览 • 1回复 待解决
HarmonyOS ArkTS 如何访问路径
741浏览 • 1回复 待解决
HarmonyOS 安装包读取文件
155浏览 • 1回复 待解决
HarmonyOS 如何访问一个在线图片
356浏览 • 1回复 待解决
Image组件如何加载盒内图片
2860浏览 • 1回复 待解决
HarmonyOS 拷贝文件
339浏览 • 1回复 待解决
有谁知道如何访问路径
819浏览 • 1回复 待解决
如何保存PNG图片相册中
2266浏览 • 1回复 待解决
如何申明一个代理使用
459浏览 • 2回复 待解决
HarmonyOS dlopen加载so文件失败
193浏览 • 1回复 待解决