有没有一种方法可以像Flash/ActionScript那样只使用HTML5/CSS/JavaScript来改变图像的颜色?
以下是Flash中的示例:http://www.kirupa.com/developer/actionscript/color.htm 编辑:我希望复制这个过程。 我正在尝试实现类似于这个(改变颜色,保留灯光和阴影):http://www.acura.com/ExteriorColor.aspx?model=TL,但不要每次加载并替换新图像; 我想能够简单地改变颜色调子(即执行纯HTML5/CSS/JS方法)。编辑:这是我希望实现的结果,而不是过程。 基本上我想改变图像的调色板/色调,同时保留图像的其他方面(如渐变、灯光等)。我已经接近了目标,但还不够。我已经使用了一个图像掩模,并将其合成到原始图像中(就像透明图像覆盖层一样)。下面是一些示例代码(请注意这只是一小部分代码,可能会出现问题;我只是显示示例代码,以便你了解我的意图):
使用这种方法的主要问题是图像看起来非常平淡。还缺少其他东西,或者我使用的遮罩(它是一个实心白色的不规则形状图像)可能是错误的方法。
以下是Flash中的示例:http://www.kirupa.com/developer/actionscript/color.htm 编辑:我希望复制这个过程。 我正在尝试实现类似于这个(改变颜色,保留灯光和阴影):http://www.acura.com/ExteriorColor.aspx?model=TL,但不要每次加载并替换新图像; 我想能够简单地改变颜色调子(即执行纯HTML5/CSS/JS方法)。编辑:这是我希望实现的结果,而不是过程。 基本上我想改变图像的调色板/色调,同时保留图像的其他方面(如渐变、灯光等)。我已经接近了目标,但还不够。我已经使用了一个图像掩模,并将其合成到原始图像中(就像透明图像覆盖层一样)。下面是一些示例代码(请注意这只是一小部分代码,可能会出现问题;我只是显示示例代码,以便你了解我的意图):
<div id='mask'>
<canvas id='canvas' width='100' height='100'></canvas>
</div>
<button data-rgba='255,0,0,0.5'>red</button>
<button data-rgba='0,255,0,0.5'>green</button>
<script>
foo = {};
foo.ctx = jQuery('#canvas')[0];
foo.ctx_context = foo.ctx.getContext('2d');
foo.mask = jQuery('#mask')[0];
foo.img = new Image();
foo.img_path = '/path/to/image_mask.png'; // 100px x 100px image
foo.changeColor = function(rgba){
foo.ctx_context.clearRect(0, 0, 100, 100);
foo.ctx_context.fillStyle = 'rgba(' + rgba + ')';
foo.ctx_context.fillRect(0, 0, 100, 100);
foo.ctx_context.globalCompositeOperation = 'destination-atop';
foo.ctx_context.drawImage(foo.img, 0, 0);
foo.ctx_context.css({'background-image': "url(" + foo.ctx.toDataURL("image/png") + ")"});
};
jQuery("button").click(function(){
foo.changeColor(jQuery(this).attr('data-rgba'));
});
</script>
使用这种方法的主要问题是图像看起来非常平淡。还缺少其他东西,或者我使用的遮罩(它是一个实心白色的不规则形状图像)可能是错误的方法。