summaryrefslogtreecommitdiff
path: root/fetch.js
diff options
context:
space:
mode:
Diffstat (limited to 'fetch.js')
-rw-r--r--fetch.js30
1 files changed, 30 insertions, 0 deletions
diff --git a/fetch.js b/fetch.js
new file mode 100644
index 0000000..c6e0cdb
--- /dev/null
+++ b/fetch.js
@@ -0,0 +1,30 @@
+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)
+}