关于微信小程序动态生成二维码的问题?

问题描述

想通过按钮触组件,组件负责发生成二维码。通过尝试,可以在本地缓存文件中成功生成临时图片,但是没有成功绘制此图片,小程序中调试报错:image load faild null。

以下是我的代码

const QRCode = require('../../utils/qrcode.js')
Component({
    properties: {
        qrCodeId: String
    },
    data: {
        canvasHidden: false,
        imagePath: ""
    },
    ready: function (options) {
        var that = this;
        var initUrl = 'https://www.sfatpaper.com?qrcode=' + this.properties.qrCodeId;
        that.createQrCode(initUrl, 'mycanvas', 170, 170);
    },
    createQrCode: function(url, canvasId, cavW, cavH) {
        var that = this;
        QRCode.api.draw(url, canvasId, cavW, cavH);
        setTimeout(() => {
            that.canvasToTempImage();
        }, 500);
    },
    canvasToTempImage: function() {
        var that = this;
        swan.canvasToTempFilePath({
            canvasId: 'mycanvas',
            success: function(res) {
                var tempFilePath = res.tempFilePath;
                that.setData({
                    imagePath: tempFilePath,
                    canvasHidden: true
                });
            },
            fail: function(res) {
                console.log(res);
            }
        });
    }
});

请问此问题是为什么呢?还望在这里得到答案,谢谢诸位耐心的解答!

阅读 2.6k
1 个回答

但是没有成功绘制此图片,你指的是生成的临时图片也出错,还是说页面没有显示?
没有显示位置的代码不能确定,但我想问题是你没有用 if 来判断 imagePath 是否有值,
于是在图片生成完毕之前,就爆出 image load faild null 读取空图片失败。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题