uniapp+vue3 使用canvas,并保存图片(图片是空白的问题)
首先把其中的要点先说一下
uni.createCanvasContext(canvasId, componentInstance)
当我们没有使用自定义组件时, 参数 componentInstance 可以不传
但如果我们的 canvas 是放在自定义组件中, 在vue2中一般传的是 this , 在vue3中是没有this的, 当我们在 vue3中要使用 this的时候, 我们一般会使用 getCurrentInstance()
如果我们不是使用的自定义组件
<template>
<view>
<canvas canvas-id="myCanvas" id="myCanvas" class="myCanvas"></canvas>
</view>
<button @click="chooseImage">选择图片</button>
</template>
ctx = uni.createCanvasContext("myCanvas");
第二个参数不传就可以了
CanvasContext.draw(reserve,callback)
在这里我们看到 ctx.draw() 是有两个参数的,其中我们要特别注意 第二个参数 callback, 当我们 使用 uni.canvasToTempFilePath 的时候, 最好是要在 callback中使用,不然, 有可能,我们得到的图片是一个空白
uni.canvasToTempFilePath(object, componentInstance)
注意, canvasToTempFilePath 在小程序或app中返回的是url 但是在 H5中返回的是一个base64的图片数据