在向一些api接口传递图片信息时,有时需要将图片转为base64格式的数据进行传递,以下时转换步骤
1、导入一些需要的包
import util from '@ohos.util'; // 导入工具函数,可能用于Base64编码
import { image } from '@kit.ImageKit'; // 导入图像处理功能
2、创建需要用到的实例化对象
//创建需要用到的实例化对象
// 初始化一个Uint8Array以保存图像数据
let bufferArr: Uint8Array = new Uint8Array();
// 从上下文获取资源管理器
let resourceManager = getContext(this).resourceManager;
// 创建图像打包器实例
const imagePackerApi: image.ImagePacker = image.createImagePacker();
// 打包选项
let packOpts: image.PackingOption = { format: 'image/png', quality: 30 };
// 解码选项
let opts: image.DecodingOptions = { editable: true };
// 创建Base64Helper实例
let help = new util.Base64Helper;
3、将需要转换的图片调用进来,并进行转换
!!!!!!注意在测试时需要用模拟器进行测试,不然可能输出不了转换之后的字符串数据
// 使用资源管理器检索媒体内容(图像)
let imageArray = await resourceManager.getMediaContent($r('图片路径'));
// 从图像数据创建一个ArrayBuffer
let pixelBuffer = new Uint8Array(imageArray).buffer as Object as ArrayBuffer;
// 从像素缓冲区创建图像源
let imageResource = image.createImageSource(pixelBuffer);
// 从图像资源创建像素图
let pixelMap = await imageResource.createPixelMap(opts);
// 将像素图打包为图像
imagePackerApi.packing(pixelMap, packOpts).then((readBuffer) => {
// readBuffer为打包后得到的ArrayBuffer
bufferArr = new Uint8Array(readBuffer); // 转换为Uint8Array
// 将图像数据转换为Base64
this.base = help.encodeToStringSync(bufferArr, util.Type.BASIC);
});