Có cách nào để thay đổi màu sắc của hình ảnh giống như trong Flash/ActionScript chỉ bằng HTML5/CSS/JavaScript không?Canvas - Thay đổi màu của hình ảnh bằng HTML5/CSS/JS?
Dưới đây là ví dụ trong Flash: http://www.kirupa.com/developer/actionscript/color.htmEDIT: Đây là quá trình tôi muốn sao chép.
Tôi đang cố gắng thực hiện một cái gì đó như thế này (khía cạnh thay đổi màu sắc, bảo quản ánh sáng và bóng tối): http://www.acura.com/ExteriorColor.aspx?model=TL KHÔNG nạp & thay thế hình ảnh mới mỗi lần; Tôi muốn có thể thay đổi tông màu đơn giản (ví dụ: thực hiện phương thức HTML5/CSS/JS thuần túy). EDIT: Đây là kết quả tôi muốn đạt được, không phải là quá trình.
Về cơ bản, tôi muốn thay đổi bảng màu/tông màu của hình ảnh, đồng thời bảo toàn các khía cạnh khác của hình ảnh (chẳng hạn như độ dốc, ánh sáng, v.v ...). Tôi đã đến gần, nhưng không đủ gần; Tôi đã nhận được điểm mà tôi sử dụng một mặt nạ hình ảnh và tổng hợp trên hình ảnh gốc (loại giống như một lớp phủ hình ảnh trong suốt). Dưới đây là một số mã mẫu (xin lưu ý đây chỉ là một đoạn mã, vì vậy nó có thể hoặc không hoạt động; Tôi chỉ hiển thị mã mẫu để bạn có ý tưởng về những gì tôi đang cố gắng làm):
<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>
Vấn đề chính khi sử dụng phương pháp này là hình ảnh trông thực sự phẳng. Có một cái gì đó khác mất tích, hoặc mặt nạ tôi đang sử dụng (mà là một hình ảnh trắng hình dạng bất thường rắn), là cách tiếp cận sai lầm.
Vui lòng đăng câu đố hoàn chỉnh sau khi bạn có câu trả lời. Cảm ơn! – iambriansreed