我有一个本质上是星爆效果的图像。星爆的颜色是白色,背景是透明的(PNG w/Alpha)。我在 HTML5 画布上的随机位置随机生成这些星爆,同时生成随机的色相、饱和度和亮度 (HSL) 值。这些可能是 RGB 值,如果这可以简化事情的话。
目标是在将 PNG 渲染到画布之前,根据随机生成的 HLS 值重新着色 PNG 以在 HTML5 画布上显示。
我在 StackOverflow 和其他网站上阅读了其他一些帖子,但我看到的唯一解决方案是将其渲染到画布上,获取图像显示位置的坐标,并逐个像素地修改颜色. 理论上这可以工作,但是一些图像可能会略有重叠。此外,如果已经存在背景,那么据我所知,背景的颜色也会被修改,这对我来说也不是什么解决方案。
如果这超出了 Canvases 的能力范围,作为后备,我想我可以使用 GD2 或 Imagick 通过 PHP 动态重新着色图像,或者通过 Gimp、ImageMagick 或其他一些命令行图片库...
非常感谢!
- 结果 -
特别感谢 @jing3142 对屏幕外画布渲染的初步建议,以及 @Jarrod 提供了我缺少的重要部分:globalCompositeOperation = "source-in"
这是该概念的工作实现:http: //jsfiddle.net/fwtW2/2/
工作于:
- 铬合金
- 火狐
- IE 9(未测试其他版本)