HarmonyOS如何将图片转Base64

通过photoPicker选择图片获取相册图片路径后,如何将图片转为base64和二进制流?

HarmonyOS
2024-08-13 16:07:19
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
Heiang

可以参考如下demo:

import fs from '@ohos.file.fs'; 
import buffer from '@ohos.buffer'; 
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 '' 
  } 
} 
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)); 
  } 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.

根据picker返回uri创建imagesource:

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); 
  }); 
})
imasource编码,再转base64:
imagePackerApi.packing(this.imagesource, packOpts).then(async (data: ArrayBuffer) => { 
  // data 为打包获取到的文件流,写入文件保存即可得到一张图片 
  if (data) { 
 
    let buf: buffer.Buffer = buffer.from(data); 
    let baseStr: string = buf.toString('base64', 0, buf.length); 
    console.log('66666' + JSON.stringify(baseStr)) 
    //送显 
    this.imgStr = "data:image/jpeg;base64," + baseStr; 
  } 
}).catch((error: BusinessError) => { 
  console.error('Failed to pack the image. And the error is: ' + error); 
})
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
分享
微博
QQ
微信
回复
2024-08-13 21:17:49
相关问题
HarmonyOS 如何将沙盒图片base64
995浏览 • 1回复 待解决
如何将PixelMap图片base64字符串?
1547浏览 • 1回复 待解决
如何将图片base64字符串PixelMap?
1602浏览 • 1回复 待解决
HarmonyOS 图片base64
946浏览 • 1回复 待解决
HarmonyOS 如何将base64数据转换为图片
1435浏览 • 1回复 待解决
HarmonyOS 如何将图片压缩并转成base64
1253浏览 • 1回复 待解决
HarmonyOS 如何将base64图片保存到相册
2425浏览 • 1回复 待解决
HarmonyOS 图片压缩和图片base64
1177浏览 • 1回复 待解决
HarmonyOS 如何实现Base64数据图片
909浏览 • 1回复 待解决
HarmonyOS 如何将文件流转为base64
1155浏览 • 1回复 待解决
如何base64换成图片
11518浏览 • 2回复 待解决
怎么把PixelMap图片BASE64
10378浏览 • 1回复 待解决
HarmonyOS 拍照后的图片base64
690浏览 • 1回复 待解决
js canvasbase64编码图片不全
12040浏览 • 1回复 待解决
HarmonyOS base64image
766浏览 • 1回复 待解决
HarmonyOS 图片base64码后乱码
721浏览 • 1回复 待解决
照片文件Base64
633浏览 • 1回复 待解决
HarmonyOS pixelMap怎么base64
618浏览 • 1回复 待解决
HarmonyOS arraybufferbase64乱码
868浏览 • 1回复 待解决
HarmonyOS 录制的视频base64
860浏览 • 1回复 待解决
HarmonyOS 图片Base64编码
840浏览 • 1回复 待解决
PixelMap怎么Base64?(非Java)
4347浏览 • 2回复 待解决
HarmonyOS 加解密base64
1005浏览 • 1回复 待解决