Canvas image

HTML

Step 1 - Choose Secret Data :
<input type="file" id="myFile" />
<hr/>
<br/>
Step 2 - Choose Cover(Image) :
<input type="file" id="cover" />
<hr/>

<br/>
Step 3 - Hiding data into image(click button) :
<button id="hideData">Hide Data into Image</button>
<hr/>

<br/>
Cover Image shown here after click hideData(before hiding):
<canvas id="canvas" width="600" height="800"></canvas>
<hr/>

<br/>
Step 4 - Cover Image + Data shown here (after hiding), right click on image and save to your pc:
<canvas id="secret" width="600" height="600"></canvas>
<hr/>
<br/>
Step 5 - Load back the image from step(4) :
<input type="file" id="loadFile" />
<hr/>
Cover Image shown here after load image, and file automatically downloaded for you :)
<canvas id="coverAfter" width="600" height="600"></canvas>

JavaScript

var
    canvas = document.getElementById( 'canvas' ),
    secret = document.getElementById( 'secret' ),
    coverAfter = document.getElementById( 'coverAfter' ),
    ctx = canvas.getContext( '2d' ),
    ctxSecret = secret.getContext( '2d' ),
    ctxCoverAfter = coverAfter.getContext( '2d' ),
    myFile = document.getElementById( 'myFile' ),
    loadFile = document.getElementById( 'loadFile' ),
    view,
    clampedArray,
    index = 0;
// listen to change event
// this event, will store Int8Array inside view variable
myFile.addEventListener( 'change', function ( e ) {

    var file = e.target.files[ 0 ];
    var fr = new FileReader();

    fr.addEventListener( "load", loadEvent );

    function loadEvent ( evt ) {

        if ( evt.target.readyState == FileReader.DONE ) {
            // returned arraybuffer object
            var arrayBuffer = evt.target.result;
            // assign arraybuffer to signed int8array instead of normal array
            // 1 byte per index, and only store to 256 values
            view = new Uint8Array( arrayBuffer );
        }

    }
    // read as arraybuffer
    fr.readAsArrayBuffer( file );

});

hideData.addEventListener( 'click', function (e ) {

    var
        cover = document.getElementById( 'cover' ),
        file = cover.files[ 0 ],
        fr = new FileReader();

    fr.addEventListener( "load", loadEvent );
    fr.addEventListener( "loadend", loadEndEvent );

    function loadEvent ( e ) {
        console.info( 'load just start..wait for finish' );
    }

    function loadEndEvent ( e ) {
        console.info( 'finish' );
        var img = new Image();
        img.src = e.target.result;
        // wait for image finish load
        // then draw image into canvas
        img.onload = function () {
            // draw cover image into canvas
            ctx.drawImage( img, 0, 0 );
            // get imageData - consist of rgba value for each array index
            clampedArray = ctx.getImageData( 0, 0, canvas.height,...