2013-06-04 64 views
0

我已经改变了一点关于模糊画布图像的JavaScript。但不知何故代码中有错误。我似乎无法找到它..代码是这一个:http://www.quasimondo.com/StackBlurForCanvas/StackBlur.js,正如你可以在这里看到的,这是我的更改,使其适合我的需求。希望你能看到我用它做什么。javascript模糊功能错误

我不知道这个问题,但浏览器控制台日志说:

Uncaught TypeError: Cannot call method 'getContext' of null

而行他们指的是这个:

var context = canvas.getContext("2d"); 
两个模糊函数

无论我是使用RGB还是RGBA

这是我对您的第一个功能所做的更改,您可以在链接的原始脚本中找到这些功能。

function stackBlurImage(imgURL, canvasID, radius, blurAlphaChannel) 
{ 
    var img = new Image(); 

    if (canvasID == "") { 
     canvasID = "tempCanvas"; 
    } 

    img.onload = function() { 
     var canvas = document.createElement("canvas"); 

     canvas.id = canvasID; 

     var w = img.naturalWidth; 
     var h = img.naturalHeight; 

     canvas.style.width = w + "px"; 
     canvas.style.height = h + "px"; 
     canvas.width = w; 
     canvas.height = h; 

     var context = canvas.getContext("2d"); 
     context.clearRect(0, 0, w, h); 
     context.drawImage(img, 0, 0); 

     if (isNaN(radius) || radius < 1) return; 

     if (blurAlphaChannel) 
      stackBlurCanvasRGBA(canvasID, 0, 0, w, h, radius); 
     else 
      stackBlurCanvasRGB(canvasID, 0, 0, w, h, radius); 

    }; 
    img.src = imgURL; 

而且我要指出,在这两种stackBlurCanvasRGBAstackBlurCanvasRGB函数结束时,我已经加入此setBlurredImage(id);,也创造了这个功能:

function setBlurredImage(canvasID) { 
    var canvas = document.getElementById(canvasID); 
    var image = document.getElementById('background'); 
    var dataURI = canvas.toDataUrl("image/png"); 
    el.style.background = "url(" + dataURI + ")"; 
} 

这是由因为我不想画布成为我网页的背景图像,这也让我更容易操作CSS背景。

回答