JSFiddle - React, Tailwind, and code Playground

HTML

<br/><p>Original was 1600x1200, reduced to 400x300 canvas</p><br/>
<canvas id="canvas" width=100 height=100></canvas>

CSS

body{ background-color: ivory; }
        canvas{border:1px solid red;}

JavaScript

var canvas=document.getElementById("canvas");
        var ctx=canvas.getContext("2d");

        img=new Image();
        img.onload=function(){
            
            /// step 1
            var oc = document.createElement('canvas'),
                octx = oc.getContext('2d');
            oc.width = img.width * 0.5;
            oc.height = img.height * 0.5;
            octx.drawImage(img, 0,0, oc.width,oc.height);

            /// step 2
            octx.drawImage(oc,0,0,oc.width * 0.5,oc.height * 0.5);
            
            canvas.width=400;
            canvas.height=150;
            ctx.drawImage(oc,0,0,oc.width * 0.5, oc.height * 0.5,
                             0,0,canvas.width,canvas.height);
        }
        img.src="http://openwalls.com/image/17342/colored_lines_on_blue_background_1920x1200.jpg";