From da38789b233b79a0a9b32f32749bc8567fa5cf2b Mon Sep 17 00:00:00 2001 From: Amine A <15179425+AmineI@users.noreply.github.com> Date: Mon, 15 Jun 2020 18:58:29 +0200 Subject: [PATCH 1/2] Add a button to view the image as grayscale Using the grayscale function from MDN Web docs --- iview.html | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/iview.html b/iview.html index e22edf0..39262a8 100644 --- a/iview.html +++ b/iview.html @@ -20,7 +20,10 @@ -

Open image:

+

+Open image: + +

@@ -63,7 +66,19 @@ + p[2] + 'Alpha: ' + p[3]+""; return {x, y}; } - + +var grayscale = function() { + var imageData= ctx.getImageData(0, 0, cvs.width, cvs.height) + var data= imageData.data + for (var i = 0; i < data.length; i += 4) { + var avg = (data[i] + data[i + 1] + data[i + 2]) / 3; + data[i] = avg; // red + data[i + 1] = avg; // green + data[i + 2] = avg; // blue + } + ctx.putImageData(imageData, 0, 0); +}; + function handleImageFiles(e) { var url = URL.createObjectURL(e.target.files[0]); var img = new Image(); From 633d04ea88b3a3d8da94e1327c6204a82051cc41 Mon Sep 17 00:00:00 2001 From: Amine A <15179425+AmineI@users.noreply.github.com> Date: Mon, 15 Jun 2020 20:05:07 +0200 Subject: [PATCH 2/2] Add support for pasting an image to the page Adding files like that does not fire a change event for the input, so a modification of handleImageFiles() was required --- iview.html | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/iview.html b/iview.html index 39262a8..0699af1 100644 --- a/iview.html +++ b/iview.html @@ -41,6 +41,10 @@ window.onload = function() { var inputImage = document.getElementById('inputImage'); inputImage.addEventListener('change', handleImageFiles, false); + window.addEventListener('paste', e => { + inputImage.files = e.clipboardData.files + handleImageFiles() + },false) } function copyMousePos(evt) { @@ -79,8 +83,8 @@ ctx.putImageData(imageData, 0, 0); }; -function handleImageFiles(e) { - var url = URL.createObjectURL(e.target.files[0]); +function handleImageFiles() { + var url = URL.createObjectURL(inputImage.files[0]); var img = new Image(); img.onload = function() { cvs.width = img.width;