JSFiddle - React, Tailwind, and code Playground

HTML

<label>Image File:</label>
<br/>
<input type="file" id="imageLoader" name="imageLoader" />
<canvas id="imageCanvas"></canvas>
<textarea rows="10" cols="100" id="output"></textarea>

JavaScript

var imageLoader = document.getElementById('imageLoader');
imageLoader.addEventListener('change', handleImage, false);
var canvas = document.getElementById('imageCanvas');
var ctx = canvas.getContext('2d');
var output = document.getElementById('output');


function handleImage(e) {
    var reader = new FileReader();
    reader.onload = function (event) {
        var img = new Image();
        img.onload = function () {
            canvas.width = img.width;
            canvas.height = img.height;
            ctx.drawImage(img, 0, 0);
            var imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);
            var out = [];
            // convert image to black and white and save in array
            for (var i = 0; i < imgData.data.length; i += 4) {
                var avg = (imgData.data[i] + imgData.data[i + 1] + imgData.data[i + 2]) / 3 > 125 ? 255 : 0;
                imgData.data[i] = avg;
                imgData.data[i + 1] = avg;
                imgData.data[i + 2] = avg;
                imgData.data[i + 3] = 255;
                out.push(avg > 125 ? 1 : 0);
            }
            ctx.putImageData(imgData, 0, 0);
            output.value = JSON.stringify(out);
        }
        img.src = event.target.result;
    }
    reader.readAsDataURL(e.target.files[0]);
}