微信小程序 canvas教程 - 2

将图片绘制到canvas上

一、CanvasContext.drawImage(imageResource, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)

绘制图像到画布

  • imageResource: 所要绘制的图片资源
  • sx: 源图像的矩形选择框的左上角 x 坐标
  • sy: 源图像的矩形选择框的左上角 y 坐标
  • sWidth: 源图像的矩形选择框的宽度
  • sHeight: 源图像的矩形选择框的高度
  • dx: 图像的左上角在目标 canvas 上 x 轴的位置
  • dy: 图像的左上角在目标 canvas 上 y 轴的位置
  • dWidth: 在目标画布上绘制图像的宽度,允许对绘制的图像进行缩放
  • dHeight: 在目标画布上绘制图像的高度,允许对绘制的图像进行缩放

有三种写法

  • drawImage(imageResource, dx, dy)
  • drawImage(imageResource, dx, dy, dWidth, dHeight)
  • drawImage(imageResource, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)从 1.9.0 起支持

1、绘制一张网络图片

    let ctx = wx.createCanvasContext('canvas-demo')
    // 绘制一张网络图片
    wx.showLoading({
      title: '图片资源加载中',
    })
    wx.getImageInfo({
      src: 'http://dik.img.kttpdq.com/pic/43/30016/b730794eb0343dcc.jpg',
      success(res){
        ctx.drawImage(res.path, 0, 0, 340, 190)
        ctx.draw()
        wx.hideLoading()
      },
      fail(err){
        console.log(err)
      }
    })

2、绘制一张本地图片

    let ctx = wx.createCanvasContext('canvas-demo')
    // 绘制一张本地图片
    ctx.drawImage('/static/img/logo.jpg', 0, 0,)
    ctx.draw()

微信小程序CanvasContext.drawImage

二、将canvas保存到本地相册

    let _that = this
    // canvas保存为临时文件,类型为jpg
    wx.canvasToTempFilePath({
      canvasId: 'canvas-demo',
      fileType: 'jpg',
      success(img) {
        // 将canvas的临时文件保存到相册
        wx.saveImageToPhotosAlbum({
          filePath: img.tempFilePath,
          fileType: 'jpg',
          success() {
            wx.showToast({
              title: '图片保存成功',
              icon: 'success'
            })
          },
          fail(err) {
            if (err.errMsg == 'saveImageToPhotosAlbum:fail cancel') {
              console.log('取消')
              wx.showToast({
                title: '取消保存',
                icon: 'none'
              })
            } else if (err.errMsg == 'saveImageToPhotosAlbum:fail auth deny') {
              console.log('未授权')
              wx.showToast({
                title: '未授权',
                icon: 'none'
              })
            }
          }
        })
      }
    })

三、打开授权

如果用户拒绝了授权,则无法保存图片到本地。需要给用户打开授权

<button class="open" hidden="{{open}}" open-type="openSetting" bindtap="openSetting"> 修改授权 </button >
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • canvas元素的基础知识 在页面上放置一个canvas元素,就相当于在页面上放置了一块画布,可以在其中进行图形的...
    oWSQo阅读 13,481评论 0 19
  • 因为微信小程序暂时没有分享到朋友圈的功能,所以只能生成分享图,然后再发到朋友圈,这就用到了canvas!刚开始写的...
    小新子666阅读 5,920评论 0 2
  • 一、canvas组件 在 test.wxml 中添加 canvas 组件 二、绘图 在 test.js 中进行绘图...
    narcissus灬阅读 13,737评论 1 4
  • 线条样式 绘制直线,第五章知识简单回顾 lineWidth 设置或返回当前的线条宽度,单位为像素 lineCap ...
    Zd_silent阅读 3,388评论 0 0
  • CanvasRenderingContext2D.drawImage()是 Canvas 2D API 中的方法,...
    JasonQiao阅读 3,328评论 0 1