¿Hay alguna manera de cambiar los colores de una imagen como en Flash/ActionScript con solo usar HTML5/CSS/JavaScript?Lienzo - ¿Cambiar colores de una imagen usando HTML5/CSS/JS?
Aquí hay un ejemplo en Flash: http://www.kirupa.com/developer/actionscript/color.htmEDITAR: Este es el proceso que deseo duplicar.
que estoy tratando de lograr algo como esto (el cambio de color aspecto, la preservación de iluminación y sombras): http://www.acura.com/ExteriorColor.aspx?model=TL sin cargar & sustituyendo una nueva imagen cada vez; Quiero poder simplemente cambiar el tono de color (es decir, hacer un método puro de HTML5/CSS/JS). EDITAR: Este es el resultado que deseo lograr, no el proceso.
Básicamente quiero cambiar la paleta/tono de una imagen, conservando los otros aspectos de la imagen (como degradado, iluminación, etc.). Me he acercado, pero no lo suficientemente cerca; He llegado al punto en que uso una máscara de imagen y un compuesto que sobre la imagen original (algo así como una superposición de imagen transparente). A continuación se muestra un código de ejemplo (tenga en cuenta que esto es sólo un fragmento, por lo que puede o no puede trabajar, yo sólo estoy mostrando código de ejemplo para que pueda obtener una idea de lo que estoy tratando de hacer):
<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>
El principal problema con el uso de este enfoque es que las imágenes se ven realmente planas. Falta algo más, o la máscara que estoy usando (que es una imagen de forma irregular blanca y sólida) es el enfoque equivocado.
Por favor, publique un violín completo una vez que tenga su respuesta. ¡Gracias! – iambriansreed