Есть ли способ изменить цвета изображения, как в Flash/ActionScript, используя только HTML5/CSS/JavaScript?Canvas - Изменение цвета изображения с помощью HTML5/CSS/JS?
Вот пример во Flash: http://www.kirupa.com/developer/actionscript/color.htmEDIT: Это процесс, который я хочу дублировать.
Я пытаюсь сделать что-то вроде этого (изменение цвета аспекта, сохраняя освещение и тень): http://www.acura.com/ExteriorColor.aspx?model=TL без загрузки & замены нового изображения каждый раза; Я хочу иметь возможность просто изменить цветовой тон (т. Е. Сделать чистый метод HTML5/CSS/JS). EDIT: Это результат, которого я хочу достичь, а не процесс.
В основном я хочу изменить палитру/тон изображения, сохраняя при этом другие аспекты изображения (например, градиент, освещение и т. Д.). Я подошел близко, но не достаточно близко; Я дошел до того, что использую маску изображения и составную часть, которая поверх исходного изображения (вроде как прозрачное наложение изображений). Ниже приведен пример кода (обратите внимание, что это просто фрагмент кода, так что он может или не может работать, я только показывая пример кода, так что вы получите представление о том, что я пытаюсь сделать):
<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>
Основная проблема с использованием этого подхода заключается в том, что изображения выглядят действительно плоскими. Там что-то еще отсутствует, или маска, которую я использую (которая является сплошным белым изображением неправильной формы), является неправильным подходом.
Пожалуйста, отправьте завершенную скрипку после получения ответа. Благодаря! – iambriansreed