Апплет WeChat — создавайте изображения через холст и сохраняйте их локально

Апплет WeChat

предисловие

Сценарий спроса: мы знаем, что мини-программами WeChat можно поделиться с друзьями или группами WeChat, но нельзя поделиться ими с Moments, поэтому обмен в Moments требует специальной обработки.Здесь мы объединяем мини-программы сcanvasИспользуется в сочетании для создания пользовательских изображений и их локального сохранения.

код

  • wxml-файл
<view>
    <button type="default" size="defaultSize" bindtap="exportImg">生成图片</button>
</view>
<canvas canvas-id="myCanvas"></canvas>
  • js-файл

Рисование через API холста

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) => {}
})

простые визуализации

Суммировать

  1. canvasизdrawImageМетод поддерживает только локальные изображения, а не сетевые изображения, поэтому я использую как аватар, так и фоновые изображения.getImageInfoЭтот метод обернулся.
  2. Аватар, полученный через userInfo, квадратный, а не востребованный круг, который здесь используетсяclip()метод, необходимо сотрудничатьsave()а такжеrestore(), потому что если его не восстановить после обрезки, то следующий рисунок будет в этой маленькой области.
  3. В этой демонстрации не используется API для генерации QR-кода, и заинтересованные друзья могут это сделать.Ссылка здесь

Справочная документация

Небольшая микроканальная программа для создания обмена фотографиями

Холст реализует изображение в круглой рамке

Официальная документация апплета WeChat