【发布时间】:2012-12-12 04:31:31
【问题描述】:
我正在尝试使用用户选择的前景色和背景色(仅限于红色、绿色、蓝色、青色、洋红色、黄色、黑色和白色)对灰度图像进行动态着色。我想要的效果如下:
original grayscale http://crawdad.cornell.edu/test/1.png red foreground http://crawdad.cornell.edu/test/2.png red foreground, yellow background http://crawdad.cornell.edu/test/3.png
从左到右,这些显示原始灰度图像,用户选择红色作为背景颜色的图像,以及具有红色背景/黄色前景的相同图像。
每次用户选择颜色时都在画布中重绘图像是不切实际的(图像将是 800x800 像素,我需要为动画创建 30 帧)。
我只针对最新版本的 WebKit、Firefox 和 Internet Explorer,所以 html5、css3 和 svg 效果都可以。图片可以是直接的 html <img> 标记,也可以是 <image> 内的 <svg> 标记(实际上后者更可取)。
理想的解决方案可能涉及 svg 过滤器(我没有经验,他们可以这样做吗?)。另一种可能性可能会将我的灰度图像视为 Alpha 通道,其上方为纯色,下方为纯色(不确定我将如何即时执行此操作)。
对于有 Adobe Director 经验的人来说,我想要的效果和 Director 的 color 和 bgColor 属性一样。 (我正在将一个项目从 Director 转换为 html5/javascript。)
【问题讨论】:
-
由于您的颜色选择有限,实际上将这 8 个选项设置为具有透明背景的 png 文件可能是最简单的。然后背景颜色就是 CSS,你就完成了。 30fps 可能太多了。
-
@popnoodles(感谢编辑图片)。我会尝试一下,尽管它可能仍然涉及不切实际的图像数量(我要处理的形状比这里显示的螺旋还要多)。我也开始研究 svg 过滤器。 feComponentTransfer 过滤器看起来很有希望。
-
哦,那我什至不会接受我说的话。根据给定的信息,我的印象是有 8 个可能保存的图像。 SVG 最有意义。
-
svg 过滤器看起来很有希望:jsfiddle.net/yPXf5 不幸的是,我还没有找到关于 tableValues 属性的好的文档。到目前为止,我必须凭经验来解决这个问题。如果我得到一些好的信息,将再次发布。 (如果有人能指出关于 tableValues 属性的好信息,请这样做!)
标签: javascript image html svg svg-filters