Home Reference Source

scripts/path-controller/util/image.js

import * as util from './util.js';


export function getImageData(image) {
  if (typeof image == "string") {
    let src = image;
    
    image = new Image();
    image.src = src;
  }
  
  function render() {
    let canvas = document.createElement("canvas");
    let g = canvas.getContext("2d");
    
    canvas.width = image.width;
    canvas.height = image.height;
    
    g.drawImage(image, 0, 0);
    return g.getImageData(0, 0, image.width, image.height);
  }
  
  return new Promise((accept, reject) => {
    if (!image.complete) {
      image.onload = () => {
        console.log("image loaded");
        accept(render(image));
      }
    } else {
      accept(render(image));
    }
  });
}

export function loadImageFile() {
  let this2 = this;
  
  return new Promise((accept, reject) => {
    let input = document.createElement("input");
    input.type = "file";
    
    input.addEventListener("change", function(e) {
      let files = this.files;
      console.log("file!", e, this.files);
      
      console.log("got file", e, files)
      if (files.length == 0) return;
      
      var reader = new FileReader();
      reader.onload = function(e) {
        var img = new Image();
        
        let dataurl = img.src = e.target.result;
        
        window._image_url = e.target.result;
        
        img.onload = (e) => {
          this2.getImageData(img).then((data) => {
            data.dataurl = dataurl;
            accept(data);
          });
        };
      };
      
      reader.readAsDataURL(files[0]);
    });
    
    input.click();
  });
}