Leinwand - Ändern Sie Farben von einem Bild unter Verwendung von HTML5/CSS/JS?

Gibt es eine Möglichkeit, ändern Sie die Farben von einem Bild ähnlich wie in Flash/ActionScript mit, die nur mithilfe von HTML5/CSS/JavaScript?

Hier ist ein Beispiel in Flash: http://www.kirupa.com/developer/actionscript/color.htm EDIT: Das ist der Prozess, den ich wünschte, Sie zu vervielfältigen.

Ich versuche, etwas zu erreichen, wie hier (Farbwechsel Aspekt, die Erhaltung der Beleuchtung und den Schatten): http://www.acura.com/ExteriorColor.aspx?model=TL OHNE zu laden & ersetzen, ein neues Bild jedes mal; ich möchte in der Lage sein, um einfach die Farbe ändern Ton (also z.B. ein reines HTML5 - /CSS - /JS-Methode). EDIT: das ist das Ergebnis ich erzielen möchte, nicht der Prozess.

Grundsätzlich will ich die palette ändern/Ton in einem Bild, wobei die anderen Aspekte des Bildes (wie Steigung, Beleuchtung, etc.). Ich habe in der Nähe, aber nicht nah genug; ich bin zu dem Punkt, wo ich ein Bild verwenden, Maske und composite, die über das ursprüngliche Bild (wie eine Art transparentes Bild-overlay). Nachfolgend finden Sie einige Beispiel-code (bitte beachten: dies ist nur ein Ausschnitt, also es kann oder kann nicht arbeiten; ich bin nur die Anzeige von Beispiel-code, so bekommt man eine Idee von dem, was ich versuche zu tun):

<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>

Das Hauptproblem bei diesem Ansatz ist, dass die Bilder wirken sehr flach. Es ist etwas anderes fehlt, oder die Maske, die ich verwende (das ist eine Feste, weiße unregelmäßig geformten Bild), ist der falsche Ansatz.

  • Poste bitte ein ausgefülltes fiddle, sobald Sie haben Ihre Antwort. Danke!
InformationsquelleAutor James Nine | 2012-04-09
Schreibe einen Kommentar