Grayscale filter with Canvas

Webkit in Tizen 2.3 does not have css3 filter. Grayscale with canvas is useful when you want show few grayscale image on page.
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<!-- original image for comparing -->
<img src="images/face.jpg">

<!-- drawing canvas for filtering image -->
<canvas id="filtercanvas" width="250" height="333"></canvas>

<script>

function grayscale(img) {
	var canvas = document.getElementById("filtercanvas");
	var ctx = canvas.getContext('2d');
	ctx.drawImage(img, 0, 0);
	var img_data = ctx.getImageData(0, 0, img.width, img.height);
	var data = img_data.data;
	for (var i=0; i<data.length; i+=4) {
	    // YCbCr Luma = 0.299*r + 0.587*g + 0.114*b
		var brightness = 0.299 * data[i] + 0.587 * data[i+1] + 0.114 * data[i+2];
		data[i] = brightness;
		data[i+1] = brightness;
		data[i+2] = brightness;
	}

	ctx.putImageData(img_data, 0, 0);
}
var img = new Image();
img.onload = function() { grayscale(this); }
img.src = "images/face.jpg";
</script>
</body>
</html>

Responses

0 Replies