微信小程序canvas如何绘制圆角图片并转换为base64格式?

2026-04-08 20:261阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计636个文字,预计阅读时间需要3分钟。

微信小程序canvas如何绘制圆角图片并转换为base64格式?

接口返回base64格式小程序二维码,通常的做法是再调用一个接口去获取jpg/png格式的图片。如果没有这个接口,也可以尝试以下方法:

1. 使用小程序内置的API将base64编码转换为图片。

2.如果小程序canvas不支持直接使用base64绘制,可以先将base64转换为图片文件,然后在canvas上加载并绘制。

以下是简化的示例代码:

javascript

// 假设已经从接口获取到base64编码的二维码图片const base64Image='data:image/png;base64,...';

// 将base64转换为图片文件function base64ToImage(base64, callback) { const canvas=document.createElement('canvas'); const ctx=canvas.getContext('2d'); const img=new Image(); img.onload=()=> { canvas.width=img.width; canvas.height=img.height; ctx.drawImage(img, 0, 0); const url=canvas.toDataURL('image/png'); callback(url); }; img.src=base64;}

// 使用转换后的图片URL绘制到canvasfunction drawImageToCanvas(canvas, imageUrl) { const img=new Image(); img.onload=()=> { canvas.width=img.width; canvas.height=img.height; const ctx=canvas.getContext('2d'); ctx.drawImage(img, 0, 0); }; img.src=imageUrl;}

// 调用函数base64ToImage(base64Image, (imageUrl)=> { drawImageToCanvas(document.getElementById('myCanvas'), imageUrl);});

接口返回base64格式小程序二维码,以往的做法是需要再调一个接口去拿到jpg/png格式的图片。如果没有这个接口呢,是不是也可以?然而小程序canvas并不支持直接使用base64绘制,好在小程序的文件系统提供了方法,可以把base64经过进一步处理转成本地图片。

获取base64格式图片

getXcxQrcode() { wx.request({ url: app.globalData.globalUrl + "/get_wx_code", data: { token: app.globalData.weixin_token, scene: app.globalData.page_key, page: "pages/index/index" }, success: (res) => { if (data.data.success) { this.base64src(data.data) } } }) }

base64格式图片转换成本地图片

base64src(base64data) { const filePath = `${wx.env.USER_DATA_PATH}/tmpbase64.png`; const buffer = wx.base64ToArrayBuffer(base64data.buffer); let that = this; fsm.writeFile({ filePath, data: buffer, encoding: 'binary', success() { that.setData({ qrcodeUrl: filePath // 得到img.558idc.com/uploadfile/allimg/js/tmpbase64.png }) }, fail() { reject(new Error('ERROR_BASE64SRC_WRITE')); }, }); },

使用获得的本地图片绘制圆角二维码

var qrW = 150; //绘制的二维码宽度 var qrH = 150; //绘制的二维码高度 var qr_x = 540; //绘制的二维码在画布上的位置 var qr_y = 960; //绘制的二维码在画布上的位置 ctx.save(); ctx.beginPath(); //开始绘制 //先画个圆 前两个参数确定了圆心 (x,y) 坐标 第三个参数是圆的半径 四参数是绘图方向 默认是false,即顺时针 ctx.arc(qrW / 2 + qr_x, qrH / 2 + qr_y, qrW / 2, 0, Math.PI * 2, false); ctx.clip(); //画好了圆 剪切 原始画布中剪切任意形状和尺寸。一旦剪切了某个区域,则所有之后的绘图都会被限制在被剪切的区域内 这也是我们要save上下文的原因 ctx.drawImage(this.data.qrcodeUrl, qr_x, qr_y, qrW, qrH); ctx.draw()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

微信小程序canvas如何绘制圆角图片并转换为base64格式?

本文共计636个文字,预计阅读时间需要3分钟。

微信小程序canvas如何绘制圆角图片并转换为base64格式?

接口返回base64格式小程序二维码,通常的做法是再调用一个接口去获取jpg/png格式的图片。如果没有这个接口,也可以尝试以下方法:

1. 使用小程序内置的API将base64编码转换为图片。

2.如果小程序canvas不支持直接使用base64绘制,可以先将base64转换为图片文件,然后在canvas上加载并绘制。

以下是简化的示例代码:

javascript

// 假设已经从接口获取到base64编码的二维码图片const base64Image='data:image/png;base64,...';

// 将base64转换为图片文件function base64ToImage(base64, callback) { const canvas=document.createElement('canvas'); const ctx=canvas.getContext('2d'); const img=new Image(); img.onload=()=> { canvas.width=img.width; canvas.height=img.height; ctx.drawImage(img, 0, 0); const url=canvas.toDataURL('image/png'); callback(url); }; img.src=base64;}

// 使用转换后的图片URL绘制到canvasfunction drawImageToCanvas(canvas, imageUrl) { const img=new Image(); img.onload=()=> { canvas.width=img.width; canvas.height=img.height; const ctx=canvas.getContext('2d'); ctx.drawImage(img, 0, 0); }; img.src=imageUrl;}

// 调用函数base64ToImage(base64Image, (imageUrl)=> { drawImageToCanvas(document.getElementById('myCanvas'), imageUrl);});

接口返回base64格式小程序二维码,以往的做法是需要再调一个接口去拿到jpg/png格式的图片。如果没有这个接口呢,是不是也可以?然而小程序canvas并不支持直接使用base64绘制,好在小程序的文件系统提供了方法,可以把base64经过进一步处理转成本地图片。

获取base64格式图片

getXcxQrcode() { wx.request({ url: app.globalData.globalUrl + "/get_wx_code", data: { token: app.globalData.weixin_token, scene: app.globalData.page_key, page: "pages/index/index" }, success: (res) => { if (data.data.success) { this.base64src(data.data) } } }) }

base64格式图片转换成本地图片

base64src(base64data) { const filePath = `${wx.env.USER_DATA_PATH}/tmpbase64.png`; const buffer = wx.base64ToArrayBuffer(base64data.buffer); let that = this; fsm.writeFile({ filePath, data: buffer, encoding: 'binary', success() { that.setData({ qrcodeUrl: filePath // 得到img.558idc.com/uploadfile/allimg/js/tmpbase64.png }) }, fail() { reject(new Error('ERROR_BASE64SRC_WRITE')); }, }); },

使用获得的本地图片绘制圆角二维码

var qrW = 150; //绘制的二维码宽度 var qrH = 150; //绘制的二维码高度 var qr_x = 540; //绘制的二维码在画布上的位置 var qr_y = 960; //绘制的二维码在画布上的位置 ctx.save(); ctx.beginPath(); //开始绘制 //先画个圆 前两个参数确定了圆心 (x,y) 坐标 第三个参数是圆的半径 四参数是绘图方向 默认是false,即顺时针 ctx.arc(qrW / 2 + qr_x, qrH / 2 + qr_y, qrW / 2, 0, Math.PI * 2, false); ctx.clip(); //画好了圆 剪切 原始画布中剪切任意形状和尺寸。一旦剪切了某个区域,则所有之后的绘图都会被限制在被剪切的区域内 这也是我们要save上下文的原因 ctx.drawImage(this.data.qrcodeUrl, qr_x, qr_y, qrW, qrH); ctx.draw()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

微信小程序canvas如何绘制圆角图片并转换为base64格式?