"canvasToTempFilePath:fail Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The provided value is not of type '(CSSImageValue or HTMLImageElement or SVGImageElement or HTMLVideoElement or HTMLCanvasElement or ImageBitmap or OffscreenCanvas or VideoFrame)'"}
时间: 2024-02-24 16:56:50 浏览: 164
这个报错信息提示你传入的二维码图片数据类型有问题,不符合绘制到 Canvas 的要求。根据你提供的代码,我看到在 canvasToTempFilePath 方法中传入的参数 data 的值是二维码的 base64 字符串,但是它应该是一个 Image 对象,或者是一个可以被解析为 Image 对象的路径(如图片的 URL 或者本地文件路径)。
你可以将二维码的 base64 字符串转化为 Image 对象,再传给 canvasToTempFilePath 方法,或者使用类似于 Taro.getImageInfo 方法来获取 Image 对象。例如:
```
const qrCodeBase64 = text;
const qrCodeImage = new Taro.Image();
qrCodeImage.src = `data:image/png;base64,${qrCodeBase64}`;
qrCodeImage.onload = async () => {
const tempFilePath = await Taro.canvasToTempFilePath({
canvasId: 'canvas',
width: 200,
height: 200,
destWidth: 400,
destHeight: 400,
fileType: 'jpg',
quality: 1,
canvas: context,
data: qrCodeImage,
});
// ...
}
```
这里使用了一个 Image 对象来加载 base64 格式的二维码图片,当它加载完成后再传给 canvasToTempFilePath 方法。
阅读全文