Skip to content

Instantly share code, notes, and snippets.

@DianSano
Created April 23, 2020 08:44
Show Gist options
  • Select an option

  • Save DianSano/5ab989312e4594eae744b2ee5062fff0 to your computer and use it in GitHub Desktop.

Select an option

Save DianSano/5ab989312e4594eae744b2ee5062fff0 to your computer and use it in GitHub Desktop.
memanipulasi image digital via javascript
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<canvas id='c' width='600' height='375'></canvas>
<script>
var canvas = document.querySelector('#c');
var ctx = canvas.getContext('2d');
var img = new Image();
img.crossOrigin = "";
img.src = 'somi.jpg';
var imgData;
img.onload = function(){
console.log('image loaded');
ctx.drawImage(img, 0, 0);
imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);
transformsInGrayScale();
}
function transformsInGrayScale(){
//retrieve the pixels
//each pixel has 4 components (red, green, blue, alpha) so:
var numPixels = imgData.data.length / 4;
for(var i = 0; i < numPixels; i++){
//one pixel = [red (index 0), green (index 1), blue (index 2), alpha (index 3)]
//gets the data (rgbA) from a pixel
var red = imgData.data[i * 4 + 0];//red (index 0)
var green = imgData.data[i * 4 + 1];//green (index 1)
var blue = imgData.data[i * 4 + 2];//blue (index 2)
var alpha = imgData.data[i * 4 + 3];//alpha (index 3)
//transforms in gray
//var gray = (0.3 * red) + (0.59 * green) + (0.11 * blue);
var gray = (red + green + blue) / 3;
//puts the gray scale on each pixel color
imgData.data[i * 4 + 0] = gray;//red
imgData.data[i * 4 + 1] = gray;//blue
imgData.data[i * 4 + 2] = gray;//green
imgData.data[i * 4 + 3] = gray;//alpha (index 3)
}
console.log(imgData.data);
ctx.putImageData(imgData, 0, 0);
}
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment