function getNaturalDimensions (img) { if (img.naturalWidth) { return { naturalWidth: img.naturalWidth, naturalHeight: img.naturalHeight } } if (img.videoWidth) { return { naturalWidth: img.videoWidth, naturalHeight: img.videoHeight } } return { naturalWidth: img.width, naturalHeight: img.height } } function fromImage (url, cb) { var loaded = false var img = new Image () img.onload = function(){ if (loaded) return loaded = true fromCanvas(img, cb) } if (img.src == url) { return img.onload() } img.src = url if (img.complete) { return img.onload() } } function fromCanvas (img, cb) { var canvas = document.createElement("canvas") var ctx = canvas.getContext('2d') var dims = getNaturalDimensions(img) canvas.width = dims.naturalWidth canvas.height = dims.naturalHeight ctx.drawImage(img,0,0,dims.naturalWidth,dims.naturalHeight,0,0,canvas.width,canvas.height) cb(canvas) }