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

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

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

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

HarmonyOS
2024-05-08 23:17:21
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
honda1999
//模拟从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
相关问题
Image组件如何加载盒内图片
346浏览 • 1回复 待解决
png图片使用Image组件加载出现锯齿
141浏览 • 1回复 待解决
如何保存PNG图片相册中
162浏览 • 1回复 待解决
如何调用测试一个wifi接口?
4286浏览 • 1回复 待解决
鸿蒙 如何实现一个渐变圆形图片
10618浏览 • 2回复 已解决
Image组件如何读入沙箱内图片
634浏览 • 1回复 待解决
Image组件如何加载网络图片
475浏览 • 1回复 待解决