【发布时间】:2013-03-14 01:43:20
【问题描述】:
我有一个本质上是星爆效果的图像。星爆的颜色是白色,背景是透明的(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(其他版本未测试)
【问题讨论】:
标签: php html html5-canvas