在生成海報時 需要在海報里生成對應id的商品二維碼,可以使用字符串轉化為二維碼圖片,但是其圖片格式為base64,在微信開發者工具可以正常查看,但是手機測試無法顯示,需要把base64圖片轉為本地圖片。
1.新建base64src.js文件
// 小程序分享二維碼是base64格式,在制作分享圖時,需要轉換為圖片格式
const fsm = wx.getFileSystemManager();
const FILE_BASE_NAME = 'tmp_base64src'; //自定義文件名
function base64src(base64data, cb) {
const [, format, bodyData] = /data:image\/(\w+);base64,(.*)/.exec(base64data) || [];
if (!format) {
return (new Error('ERROR_BASE64SRC_PARSE'));
}
const filePath = `${wx.env.USER_DATA_PATH}/${FILE_BASE_NAME}.${format}`;
const buffer = wx.base64ToArrayBuffer(bodyData);
fsm.writeFile({
filePath,
data: buffer,
encoding: 'binary',
success() {
cb(filePath);
},
fail() {
return (new Error('ERROR_BASE64SRC_WRITE'));
},
});
};
export { base64src };
2、在需要使用的文件中引入並使用
import { base64src } from '../../utils/base64src.js'
Page({
data: {
shareQrImg: "data:image/jpeg;base64,/9j/4AAQSkZJRgA........GASDFKGKF=" //base64圖片
},
onLoad: function (options) {
base64src(this.data.shareQrImg, res => {
console.log(res) // 返回圖片地址,直接賦值到image標簽即可
});
},
})
3、如果需要網絡圖片轉換成base64格式。
wx.request({
url: "https://s0.2mdn.net/simgad/10657937226496242109",
method: 'GET',
responseType: 'arraybuffer',
success: (res) => {
let base64 = wx.arrayBufferToBase64(res.data);
let userImageBase64 = 'data:image/jpg;base64,' + base64;
console.log(userImageBase64); // 打印base64格式圖片
// 如果需要使用本地緩存圖片,請參照第一步
}
})