JS Upload Image (by image objct)

JS upload image by image objct and draw canvas.

by Tinytsunami

HTML

<div id="demo">
  <canvas width="300px" height="300px"></canvas>
  <div>
    <label>
      <input type="file" accept="image/*"/>
      <div>select file</div>
    </label>
    <button>upload</button>
  </div>
</div>

CSS

body {
  color: #ffffff;
  background: #20262e;
  font-family: monospace, sans-serif;
}

#demo {
  padding: 5px;
}

#demo canvas {
  border: solid 1px #ffffff;
}

#demo>div {
  margin-top: 5px;
}

#demo label input {
  color: #ffffff;
  background: #20262e;
  outline: none;
  display: none;
}

#demo label div {
  float: left;
  font-weight: bold;
  font-size: 13.3333px;
  text-align: center;
  padding: 1px 6px;
  margin-right: 10px;
  color: #ffffff;
  background: #20262e;
  border: 1px solid #ffffff;
  outline: none;
}

#demo label div:hover {
  color: #20262e;
  background: #ffffff;
  border: 1px solid #ffffff;
}

#demo button {
  float: left;
  color: #ffffff;
  background: #20262e;
  border: 1px solid #ffffff;
  outline: none;
  margin-right: 10px;
}

#demo button:hover {
  color: #20262e;
  background: #ffffff;
  border: 1px solid #ffffff;
}

JavaScript

(function() {
  /* get elements */
  let root = document.getElementById("demo");
  let canvasNode = root.getElementsByTagName("canvas")[0];
  let divNode = root.getElementsByTagName("div");
  let inputNode = root.getElementsByTagName("input")[0];
  let buttonNode = root.getElementsByTagName("Button")[0];
  let fileNode = root.getElementsByTagName("div")[1];
  let context = canvasNode.getContext("2d");

  inputNode.onchange = function() {
    let file = inputNode.files[0];
    if (file)
      fileNode.innerHTML = `${file.name}`;
  };

  /* process image */
  buttonNode.onclick = function() {
    let file = inputNode.files[0];
    let img = new Image();
    img.onload = function() {
      context.drawImage(img, 0, 0);
    };
    img.src = URL.createObjectURL(file);
  };
})();