参考demo:import fs from '@ohos.file.fs'; import buffer from '@ohos.buffer'; /** * 图片转base64 * * @param filePath 文件路径 * @param bufferLen * @returns base64 */ export function imageToBase64(filePath: string, bufferLen = 409600) { try { const file = fs.openSync(filePath, fs.OpenMode.READ_WRITE); const arrayBuffer = new ArrayBuffer(bufferLen); const readLen = fs.readSync(file.fd, arrayBuffer); const buf = buffer.from(arrayBuffer, 0, readLen); const base64 = buf.toString('base64'); fs.closeSync(file); return base64; } catch (e) { console.error('file err:', JSON.stringify(e)); return '' } } /** * base64转图片 * * @param base64 * @param filePath */ export function base64ToImage(base64: string, filePath: string) { try { const reg = new RegExp(); const str = base64.replace(reg, ""); const dataBuffer = buffer.from(str, 'base64'); const file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); fs.writeSync(file.fd, dataBuffer.buffer); fs.closeSync(file); } catch (e) { console.error('file err:', JSON.stringify(e)); } } Image(this.pixelMap).width(200).height(200) Button('打开相册') .onClick(() => { //创建图库选择器对象实例 const photoViewPicker =new photoAccessHelper.PhotoViewPicker(); //调用select()接口拉起图库界面进行文件选择,文件选择成功后,返回PhotoSelectResult结果集 photoViewPicker.select().then(async (photoSelectResult: picker.PhotoSelectResult) => { //用一个全局变量存储返回的uri selectUris = photoSelectResult.photoUris; console.info('photoViewPicker.select to file succeed and uris are:' + selectUris); }).catch((err: BusinessError) => { console.error(`Invoke photoViewPicker.select failed, code is ${err.code}, message is ${err.message}`); }) }) Button('creatPixelMap') .margin({ top: 5 }) .onClick((event: ClickEvent) => { //使用fs.openSync接口,通过uri打开这个文件得到fd let file = fs.openSync(selectUris[0], fs.OpenMode.READ_ONLY); console.info('file fd: ' + file.fd); //根据文件fd创建imagSource const imageSource: image.ImageSource = image.createImageSource(file.fd); //完成后关闭fd fs.closeSync(file); }); })
参考demo: