请问微信小程序中,从chooseImage选择上传至临时路径的图片能转成base64编码,再用其编码做其他操作(用于显示出来,或者传送至后台)吗?
请问微信小程序中,从chooseImage选择上传至临时路径的图片能转成base64编码,再用其编码做其他操作(用于显示出来,或者传送至后台)吗?
canvas = wx.createCanvasContext(canvasID)
// 1. 绘制图片至canvas
canvas.drawImage(imgPath, 0, 0, imgWidth, imgHeight)
// 绘制完成后执行回调,API 1.7.0
canvas.draw(false, () => {
// 2. 获取图像数据, API 1.9.0
wx.canvasGetImageData({
canvasId: canvasID,
x: 0,
y: 0,
width: imgWidth,
height: imgHeight,
success(res) {
// 3. png编码
let pngData = upng.encode([res.data.buffer], res.width, res.height)
// 4. base64编码
let base64 = wx.arrayBufferToBase64(pngData)
// ...
}
})
})
有个识别名片的小程序Demo,可以参考这里
var uploadImage = this.data.imageList[0]
var reader = new FileReader()
reader.onload = function (e) {
var arrayBuffer = reader.result;
var base64 = wx.arrayBufferToBase64(arrayBuffer)
}
reader.readAsArrayBuffer(new Blob(this.data.imageList))
wx.chooseImage({
count: 1,
sizeType: [ 'compressed'],
sourceType: ['album', 'camera'],
success(res) {
wx.getFileSystemManager().readFile({
filePath: res.tempFilePaths[0], //选择图片返回的相对路径
encoding: 'base64', //编码格式
success: res => { //成功的回调
console.log('data:image/png;base64,' , res.data)
}
})
//以下两行注释的是同步方法,不过我不太喜欢用。
// let base64 = wx.getFileSystemManager().readFileSync(res.tempFilePaths[0], 'base64')
// console.log(base64)
}
})
2 回答3.1k 阅读
1 回答882 阅读
还是传到服务器上让服务器编码吧