关于uniapp生成一维码图片
步骤
- 生成一维码的base64字符串
- 将base64转为图片
- 绘制图片
实现
生成一维码的base64字符串
const bwipjs = require('@bwip-js/node')
export const generateBase64 = async (data = '1234567890') => {const png = await bwipjs.toBuffer({bcid: 'code128',text: data,scale: 3,height: 10,width: 70,includetext: true})return `data:image/png;base64,${png.toString('base64')}`
}
将base64转为图片
function base64ToImage(code) {return new Promise((resolve, reject) => {const bitmap = new plus.nativeObj.Bitmap('tempBitmap')bitmap.loadBase64Data(code,function () {bitmap.save('_www/bimap/temp.png',{},(result) => {resolve(result.target)bitmap.clear()},reject)},reject)})},
使用canvas绘制生成的图片
handleDraw() {return new Promise((resolve, reject) => {const ctx = uni.createCanvasContext(this.canvasPrintId, this)this.drawImage(ctx, this.printStyle)ctx.draw(false, () => {uni.canvasToTempFilePath({canvasId: this.canvasPrintId,success: (res) => {plus.io.resolveLocalFileSystemURL(res.tempFilePath,(entry) => {entry.file((file) => {const reader = new plus.io.FileReader()reader.onloadend = (e) => {resolve(e.target.result) }reader.readAsDataURL(file) }, reject)},reject)},fail: reject},this)})})}