希望以下内容符合您想要做的事情,我认为结果很好。所以我使用了过滤器库代码文章 http://www.html5rocks.com/en/tutorials/canvas/imagefilters/,并且刚刚为库创建了一个新的发光滤镜,因为他的代码一开始就做得很好。这里有一个现场演示 http://somethinghitme.com/projects/glow/显示活动中的发光效果。
这是您需要添加到库中的过滤器代码
Filters.glow = function(pixels, passes, image, glowPasses){
for(var i=0; i < passes; i++){
pixels = Filters.convolute(pixels,
[1/9, 1/9, 1/9,
1/9, 1/9, 1/9,
1/9, 1/9, 1/9 ]);
}
var tempCanvas = document.createElement("canvas"),
glowCanvas = document.createElement("canvas"),
tCtx = tempCanvas.getContext("2d"),
gCtx = glowCanvas.getContext("2d");
tempCanvas.width = glowCanvas.width = pixels.width;
tempCanvas.height = tempCanvas.height = pixels.height;
tCtx.putImageData(pixels, 0, 0);
gCtx.drawImage(image, 0, 0);
gCtx.globalCompositeOperation = "lighter";
for(i = 0; i < glowPasses; i++){
gCtx.drawImage(tempCanvas,0,0);
}
return Filters.getPixels(glowCanvas);
}
这就是您使用上述过滤器的方式。
var glowImage = document.images[1],
glowMask = document.images[0],
c = document.getElementById("canvas"),
ctx = c.getContext("2d");
window.onload = function() {
var pData = Filters.filterImage(Filters.glow, glowImage, 5, glowMask, 2);
c.width = pData.width;
c.height = pData.height;
ctx.putImageData(pData, 0, 0);
}
您需要为其提供 2 张图像。第一个是您希望出现辉光的图像,第二个是应用于图像的实际辉光蒙版。然后,您可以指定要执行多少个模糊通道,这会使发光更加突出,以及要执行多少个发光通道,这会将发光添加到图像中。我用lighter
阿尔法混合画布的全局合成。
本文 https://developer.download.nvidia.com/books/HTML/gpugems/gpugems_ch21.html是创建发光效果的非常好的资源,也是我获得图形的地方,以便根据他们的结果测试我的结果。