HarmonyOS 鸿蒙Next 元服务web页面获取到的图片怎么转成base64
HarmonyOS 鸿蒙Next 元服务web页面获取到的图片怎么转成base64
鸿蒙元服务AtomicServiceWeb组件开发的web页面中用新的js sdk方法has.photoViewPicker.select()拿到的图片uri怎么转成base64格式呢?
2 回复
可以参考如下demo,替换相应的uri尝试一下:
import { photoAccessHelper } from '[@kit](/user/kit).MediaLibraryKit';
import { buffer } from '[@kit](/user/kit).ArkTS';
import { PictureUtils } from '../utils/PictureUtils';
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
[@State](/user/State) pictures: Array<string> = [];
[@Styles](/user/Styles)
butStyle(){
.width(200)
.height(50)
.margin({ top: 30 })
}
async selectAndCompressPicture() {
this.pictures = [];
let selectResult: photoAccessHelper.PhotoSelectResult = await PictureUtils.selectPicture(2);
let pictureUriArr: Array<string> = selectResult.photoUris;
pictureUriArr.forEach(uri => {
PictureUtils.compressPicture(uri, "image/jpeg", 20).then((data: ArrayBuffer) => {
// 将图片转成base64
let base64Str = buffer.from(data).toString('base64')
let resultBase64Str = "data:image/png;base64," + base64Str
this.pictures.push(resultBase64Str)
})
});
}
build() {
Column() {
ForEach(this.pictures, (uri: string) => {
Image(uri)
.width(200)
.height(200)
.padding({ top: 30 })
}, (item: string) => item)
Button("选择图片并压缩", { type: ButtonType.Capsule, stateEffect: false })
.fontSize('15fp')
.fontColor('#ffffff')
.butStyle()
.onClick(() => {
this.selectAndCompressPicture()
})
}
.width('100%')
.height('100%')
.alignItems(HorizontalAlign.Center)
.justifyContent(FlexAlign.Center)
}
}
更多关于HarmonyOS 鸿蒙Next 元服务web页面获取到的图片怎么转成base64的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next元服务中,将web页面获取到的图片转换成Base64编码,可以通过以下步骤实现:
-
获取图片数据:首先,确保你已经通过web页面成功获取到了图片数据,通常是以Blob对象或者URL的形式存在。
-
读取图片数据:使用FileReader API读取图片数据。如果图片是以Blob对象形式存在,可以将其传递给FileReader的readAsDataURL方法。
-
转换Base64编码:FileReader的onload事件触发时,其result属性会包含图片的Base64编码字符串。你可以直接使用该字符串。
示例代码如下:
let imageBlob = // 从web页面获取到的图片Blob对象
let reader = new FileReader();
reader.onload = function(e) {
let base64String = e.target.result.split(',')[1]; // 提取Base64编码部分
console.log(base64String); // 输出Base64编码
};
reader.readAsDataURL(imageBlob);
注意,上述代码假设你已经有了图片的Blob对象。如果图片是以URL形式存在,你可能需要先通过fetch API或其他方式将其转换为Blob对象。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html