머리말
요구 시나리오: WeChat 미니 프로그램은 친구나 WeChat 그룹과 공유할 수 있지만 Moments와 공유할 수는 없다는 것을 알고 있습니다. 여기서는 미니 프로그램을 와 결합합니다. canvas
를 결합하여 사용자 정의 이미지를 생성하고 로컬에 저장합니다. canvas
结合起来使用,生成自定义图片并保存到本地。
代码
wxml文件
<view> <button type="default" size="defaultSize" bindtap="exportImg">生成图片</button> </view> <canvas canvas-id="myCanvas"></canvas>
js文件
通过canvasAPI绘制
const ctx = wx.createCanvasContext('myCanvas'); //绘制背景图 ctx.drawImage(res.path, 0, 0, screenWidth, 500); //绘制背景图上层的头像 ctx.save(); ctx.arc(100, 100, 30, 0, 2 * Math.PI); ctx.clip(); ctx.drawImage(avatarUrl, 50, 50, 110, 110);//根据微信getUserInfo接口获取到用户头像 ctx.restore(); //绘制文字 ctx.setTextAlign('center') ctx.setFillStyle('#fff') ctx.setFontSize(16) ctx.fillText(userInfo.nickName, 100, 180)//用户昵称 ctx.stroke() ctx.draw()
通过wx.canvasToTempFilePath获取本地路径
wx.canvasToTempFilePath({ x: 0, y: 0, width: 300, height: 500, canvasId: 'myCanvas', success: function (res) { console.log(res.tempFilePath); } })
通过wx.saveImageToPhotosAlbum保存图片到本地
wx.saveImageToPhotosAlbum({ filePath: tempFilePath,//canvasToTempFilePath返回的tempFilePath success: (res) => { console.log(res) }, fail: (err) => {} })
简单的效果图
总结
canvas
的drawImage
方法只支持本地图片,不支持网络图片,所以头像和背景图我都用getImageInfo
这个方法转了一下。
通过userInfo
获取的头像是正方形的,不是需求中的圆形,这里用到了clip()
方法,需要配合save()
和restore()
,因为裁剪之后如果不恢复,接下来的绘制都会在那个小区域里面。
此次demo
js 파일
rrreeecanvasAPI를 통해 그리기
wx.canvasToTempFilePath를 통해 로컬 경로 가져오기 🎜rrreee
rrreeewx.saveImageToPhotosAlbum🎜
🎜간단한 렌더링🎜 🎜을 통해 사진을 로컬에 저장하세요. 🎜
🎜🎜Summary🎜🎜
canvas
의drawImage
메서드는 로컬 이미지만 지원하고 네트워크 이미지는 지원하지 않습니다. 그래서getImageInfo
메소드를 사용하여 아바타와 배경 이미지를 모두 전송했습니다. 🎜🎜userInfo
를 통해 얻은 아바타는 원이 아닌 사각형입니다. 여기서는clip()
메서드가 사용되며save() 및 <code>restore()
, 자르기 후에 복원되지 않으면 다음 그림이 그 작은 영역에 있게 되기 때문입니다. 🎜🎜이데모
는 QR 코드 생성을 위한 API를 사용하지 않습니다. 관심 있는 친구는 사용해 볼 수 있습니다. 🎜여기 링크가 있습니다🎜🎜🎜추천 튜토리얼: "🎜JS Tutorial🎜"🎜
위 내용은 WeChat applet-canvas는 이미지를 생성하여 로컬에 저장합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!