我有一个画布,我想在其中加载一个代表 png 图像的 Base64 字符串。但是,下面的代码只显示一个空白的白框,我不知道为什么。当我查看画布中的数据时,它看起来与从 FileReader 对象(也在下方)获取数据的画布相同。非常感谢您对推断此问题的任何帮助!
此代码显示一个白色画布:
html
        <canvas id="canvas" width="114" height="114" style="z-index: 999999; display: none; padding-left: 50px"></canvas>
javascript
        var websiteIconData = $('#ctl00_ContentPlaceHolder1_websiteIcon');
        if (websiteIconData.val() != '') {
            var canvas = document.getElementById('canvas');
            var ctx = document.getElementById('canvas').getContext('2d');
            var loadedImg = new Image();
            loadedImg.onload = function () {
                ctx.drawImage(this, 0, 0);
                Debugger.log(ctx);
            };
            loadedImg.src = websiteIconData.val();
            canvas.style.display = 'block';
        }
此代码显示图像:
        $('#loadWebsiteIcon').on({
            change: function (ev) {
                var reader = new FileReader();
                reader.onload = function (e) {
                    function draw() {
                        var ctx = document.getElementById('canvas').getContext('2d');
                        var img = new Image();
                        img.onload = function () {
                            var MAX_WIDTH = 114;
                            var MAX_HEIGHT = 114;
                            var width = img.width;
                            var height = img.height;
                            if (width > MAX_WIDTH) {
                                width = MAX_WIDTH;
                            }
                            if (height > MAX_HEIGHT) {
                                height = MAX_HEIGHT;
                            }
                            ctx.drawImage(img, 0, 0, width, height);
                            for (var i = 0; i <= document.images.length; i++) {
                            }
                            Debugger.log(ctx);
                        };
                        img.src = e.target.result;
                    }
                    draw();
                };
                reader.readAsDataURL(ev.target.files[0]);
                var canvas = document.getElementById('canvas');
                canvas.style.display = 'block';
                var imgData = canvas.toDataURL();
                $('#ctl00_ContentPlaceHolder1_websiteIcon').val(imgData);
                Debugger.log(imgData);
            }
        });