我已经改变了一点关于模糊画布图像的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;
而且我要指出,在这两种stackBlurCanvasRGBA
和stackBlurCanvasRGB
函数结束时,我已经加入此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背景。