में ग्रेस्केल में छवि का रंग बदलें मेरे पास एक पीएनजी छवि है जिसे मैं ग्रे स्केल में परिवर्तित करना चाहता हूं। मैं इसे ग्रेस्केल में परिवर्तित करने में कामयाब रहा, हालांकि यह छवि के पारदर्शी इलाकों के रंग भी बदलता है। छवि के पारदर्शी क्षेत्र को बदलने के बिना मैं अपना रंग कैसे बदल सकता हूं?एचटीएमएल 5
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var img = new Image();
img.src = 'image.png';
ctx.drawImage(img, 0, 0);
var imageData = ctx.getImageData(0, 0, 420, 420);
var px = imageData.data;
var len = px.length;
for (var i = 0; i < len; i+=4) {
var redPx = px[i];
var greenPx = px[i+1];
var bluePx = px[i+2];
var alphaPx = px[i+3];
var greyScale = redPx * .3 + greenPx * .59 + bluePx * .11;
px[i] = greyScale;
px[i+1] = greyScale;
px[i+2] = greyScale;
px[i+3] = greyScale;
}
ctx.putImageData(imageData, 0, 0);
हालांकि यह पूरी तरह से समर्थित नहीं है, क्रोम में आप इस उत्तर में '-webkit-filter: ग्रेस्केल (100%) ' – andy