You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于simpleheat的Canvas热力图如何添加发光后期处理效果

实现simpleheat热力图的发光效果

针对你用simpleheat开发Canvas热力图时遇到的发光效果问题,下面提供几种原生Canvas实现方案,替代Pixi Filters的思路:

方法1:双层Canvas叠加(模糊底+原图层)

通过两个Canvas分层绘制,底层做模糊处理模拟发光,上层绘制正常热力图,叠加后就能得到类似示例的效果:

<div style="position: relative;">
  <canvas id="heat-blur" style="position: absolute; top: 0; left: 0; filter: blur(12px); opacity: 0.8;"></canvas>
  <canvas id="heat-normal" style="position: absolute; top: 0; left: 0;"></canvas>
</div>

<script>
// 初始化两个simpleheat实例
const blurHeat = simpleheat('heat-blur');
const normalHeat = simpleheat('heat-normal');

// 传入相同的热力点数据
const heatData = [/* 你的热力点数组,格式如[x, y, value] */];
blurHeat.data(heatData);
normalHeat.data(heatData);

// 调整模糊层的渐变,增强发光的层次感
blurHeat.gradient({
  0.4: 'rgba(0, 0, 255, 0.3)',
  0.65: 'rgba(0, 255, 255, 0.5)',
  0.85: 'rgba(255, 255, 0, 0.7)',
  1.0: 'rgba(255, 0, 0, 0.9)'
});

// 分别绘制两个图层
blurHeat.draw();
normalHeat.draw();
</script>

方法2:单Canvas内置滤镜叠加

直接在同一个Canvas上先绘制模糊版本,再叠加原图,无需额外DOM元素:

const heat = simpleheat('heatmap');
heat.data(/* 你的热力点数据 */);
heat.draw();

const ctx = heat._canvas.getContext('2d');
// 保存当前热力图的像素数据
const originalImage = ctx.getImageData(0, 0, heat._width, heat._height);

// 绘制模糊层作为发光基底
ctx.filter = 'blur(8px)';
ctx.putImageData(originalImage, 0, 0);

// 恢复滤镜,叠加半透明的原图
ctx.filter = 'none';
ctx.globalAlpha = 0.7;
ctx.putImageData(originalImage, 0, 0);

方法3:调整simpleheat自身参数模拟发光

通过增大热力点半径、优化渐变透明度,从渲染逻辑本身实现发光感:

const heat = simpleheat('heatmap');
// 扩大半径让热力扩散范围更广
heat.radius(30);
// 调整渐变,让低透明度的淡色覆盖更大范围
heat.gradient({
  0.0: 'rgba(0, 0, 255, 0)',
  0.3: 'rgba(0, 0, 255, 0.2)',
  0.5: 'rgba(0, 255, 255, 0.4)',
  0.7: 'rgba(255, 255, 0, 0.6)',
  0.9: 'rgba(255, 0, 0, 0.8)',
  1.0: 'rgba(255, 0, 0, 1)'
});
heat.data(/* 你的热力点数据 */);
heat.draw();

关于Pixi Filters失效的原因

simpleheat基于原生Canvas API渲染,和PixiJS的WebGL渲染上下文不兼容,直接套用Pixi的滤镜会因为上下文环境不同而无法生效,所以更适合用上述原生Canvas方案实现。

内容的提问来源于stack exchange,提问作者Jelani Thompson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 05:00:59