Html5 canvas 从base 64图像作为源在画布中绘制

Html5 canvas 从base 64图像作为源在画布中绘制,html5-canvas,base64,onload,Html5 Canvas,Base64,Onload,我正在使用裁剪插件从中选择一个图像区域。使用公共URL src图像时,裁剪预览会起作用。当src是base 64字符串时,它不是。 一直在谷歌上搜索可能的原因,但没有运气。 代码如下所示: function updatePreview(c) { if(parseInt(c.w) > 0) { var img = new Image, src = $('.jcrop-holder img').attr('src'), cvs

我正在使用裁剪插件从中选择一个图像区域。使用公共URL src图像时,裁剪预览会起作用。当src是base 64字符串时,它不是。 一直在谷歌上搜索可能的原因,但没有运气。 代码如下所示:

function updatePreview(c) 
{
    if(parseInt(c.w) > 0) 
    {
        var img = new Image,
        src = $('.jcrop-holder img').attr('src'),
        cvs = document.getElementById('preview'),
        ctx = cvs.getContext('2d');
        img.crossOrigin = "Anonymous";
        img.onload = function() 
        {
            console.log('Onload event fired!');
            var ctx = cvs.getContext("2d");
            ctx.drawImage(img, c.x, c.y, c.w, c.h, 0, 0, cvs.width, cvs.height);    
            var dataURL = cvs.toDataURL();
            new_image = dataURL;    
        }
        img.src = src;
        if ( img.complete || img.complete === undefined ) 
        {
            console.log('Undefined!');
            img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
            img.src = src;
        }

    }
};

另外,当我开始拖动区域选择器时,使用code64图像,它会受到一定的延迟。

我使用的基本64来自另一个画布,我在这里发现:最好的选择是使用原始画布作为drawimage()的源。问题仍然在于性能,但我会写另一个更具体的问题