diff options
| author | jules <jules@okfoc.us> | 2013-12-13 16:06:43 -0500 |
|---|---|---|
| committer | jules <jules@okfoc.us> | 2013-12-13 16:06:43 -0500 |
| commit | e6a10925902812fe78732af31f289d7176b2c1a3 (patch) | |
| tree | 277e6cf2c782618e3a026c263b2b253bbafa4f73 | |
| parent | 346f3a9817b1e0812565396b9811a1ce5adc97b8 (diff) | |
general util.js
| -rw-r--r-- | gif-animate.html | 44 | ||||
| -rw-r--r-- | gif-dither.html | 63 | ||||
| -rw-r--r-- | gif.html | 43 | ||||
| -rw-r--r-- | js/util.js | 38 | ||||
| -rw-r--r-- | js/vendor/gif-encode/client.js | 2 |
5 files changed, 71 insertions, 119 deletions
diff --git a/gif-animate.html b/gif-animate.html index 55396cd..7c0b774 100644 --- a/gif-animate.html +++ b/gif-animate.html @@ -22,43 +22,22 @@ <script type="text/javascript" src="js/vendor/gif.js"></script> <script type="text/javascript" src="js/vendor/canvasquery.js"></script> <script type="text/javascript" src="js/canvasquery.dither.js"></script> +<script type="text/javascript" src="js/util.js"></script> <script type="text/javascript"> +var algo = "random" +var frames; +var viewer; +var raf_id; + document.getElementById("url").onchange = load load() -function load(imageURL) { - document.getElementById("loading").style.display = "inline" - var imageURL = proxify( document.getElementById("url").value ); - - if (imageURL.substr(-3) === "gif") { - window.gif = GIF(imageURL); - // gif.on("error", tryToLoadNextImage); - // gif.on("rendered", trackLoadTime); - gif.on("rendered", ready); - return gif.render(); - } else { - window.img = new Image(); - // img.addEventListener("error", tryToLoadNextImage); - img.addEventListener("load", ready); - img.crossOrigin = "anonymous"; - return img.src = imageURL; - } +function load(){ + var imageURL = document.getElementById("url").value + loadImage(imageURL, ready) } -function giveImage() { - if (imageURL.substr(-3) === "gif") { - return gif.frames[gif.currentFrame()].ctx.canvas; - } else { - return img; - } -} - -function proxify (url) { - return "/cgi-bin/proxy?" + url // .replace(/^https?:\/\//, ""); -}; - - function ready(){ document.getElementById("loading").style.display = "none" var buttons = document.getElementsByTagName("button") @@ -74,9 +53,6 @@ function ready(){ animate() } -var algo = "random" -var frames; -var viewer; function build(){ frames = [] @@ -88,6 +64,7 @@ function build(){ viewer = cq(w, h) viewer.appendTo("#images") } + function dither(frame){ var canvas = frame.ctx.canvas var w = canvas.width, h = canvas.height; @@ -97,7 +74,6 @@ function dither(frame){ frames.push(cc) } -var raf_id; function animate(){ raf_id = requestAnimationFrame(animate) var canvas = frames[gif.currentFrame()].canvas diff --git a/gif-dither.html b/gif-dither.html index 359c0b5..84217fc 100644 --- a/gif-dither.html +++ b/gif-dither.html @@ -13,7 +13,7 @@ <button id="pattern4">pattern4</button> <button id="pattern3">pattern3</button> <!-- <button id="right">right</button> --> -<input type="text" id="url" value="1376516658960-dumpfm-DoritoWitch-TimeFLyTrans0001.png"> +<input type="text" id="url" value="img/1376516658960-dumpfm-DoritoWitch-TimeFLyTrans0001.png"> <button id="encode">ENCODE</button> <button id="save">SAVE</button> <span id="loading"></span> @@ -24,10 +24,11 @@ <script type="text/javascript" src="js/vendor/gif-encode/tube.js"></script> <script type="text/javascript" src="js/vendor/gif-encode/client.js"></script> <script type="text/javascript" src="js/vendor/gif.js"></script> -<script type="text/javascript" src="js/vendor/FileSaver.js"></script> +<script type="text/javascript" src="js/vendor/FileSaver/FileSaver.js"></script> <script type="text/javascript" src="js/vendor/dataUriToBlob.js"></script> <script type="text/javascript" src="js/vendor/canvasquery.js"></script> <script type="text/javascript" src="js/canvasquery.dither.js"></script> +<script type="text/javascript" src="js/util.js"></script> <script type="text/javascript"> document.getElementById("url").onchange = load @@ -37,51 +38,17 @@ function init () { bind() // load() } +function load(){ + document.getElementById("save").style.display = "none" + var imageURL = document.getElementById("url").value + loadImage(imageURL, ready) +} +// UI function status (s){ var el = document.getElementById("loading") el.innerHTML = s + "..." } - -function load(imageURL) { - document.getElementById("save").style.display = "none" - document.getElementById("encode").style.display = "none" - status("loading") - var imageURL = proxify( document.getElementById("url").value ); - - window.gif = window.img = null - - if (imageURL.substr(-3) === "gif") { - window.gif = GIF(imageURL); - // gif.on("error", tryToLoadNextImage); - // gif.on("rendered", trackLoadTime); - gif.on("rendered", ready); - return gif.render(); - } else { - window.img = new Image(); - // img.addEventListener("error", tryToLoadNextImage); - img.addEventListener("load", ready); - img.crossOrigin = "anonymous"; - return img.src = imageURL; - } -} - -function giveImage() { - if (imageURL.substr(-3) === "gif") { - return gif.frames[gif.currentFrame()].ctx.canvas; - } else { - return img; - } -} - -function proxify (url) { - if (url.indexOf("http") == 0) - return "/cgi-bin/proxy?" + url // .replace(/^https?:\/\//, ""); - else - return url -}; - - function bind(){ var buttons = document.getElementsByTagName("button") for (var i = 0; i < buttons.length; i++) { @@ -96,6 +63,8 @@ function bind(){ document.getElementById("encode").onclick = encode } + + var encoder = new GifEncoder() encoder.on("quantized", function(url){ @@ -112,14 +81,6 @@ encoder.on("rendered-url", function(url){ document.getElementById("save").style.display = "inline" }) -/* -var lastGif; -encoder.on("rendered", function(bits){ - status("") - lastGif = bits - document.getElementById("save").style.display = "inline" -}) -*/ function save (){ if (!lastGif) return; @@ -138,6 +99,7 @@ function ready(){ var algo = "random" var frames = [] + function build(){ status("dithering") encoder.resetFrames() @@ -149,7 +111,6 @@ function build(){ for (var i = 0; i < buttons.length; i++) { if (buttons[i].id != "save" && buttons[i].id != "encode") bz.push(buttons[i].id) } - zz = bz gif.frames.forEach(function(frame, i){ var algo = bz[i % bz.length] var cc = dither(frame) @@ -24,11 +24,16 @@ <script type="text/javascript" src="js/vendor/gif-encode/tube.js"></script> <script type="text/javascript" src="js/vendor/gif-encode/client.js"></script> <script type="text/javascript" src="js/vendor/gif.js"></script> -<script type="text/javascript" src="js/vendor/FileSaver.js"></script> +<script type="text/javascript" src="js/vendor/FileSaver/FileSaver.js"></script> <script type="text/javascript" src="js/vendor/canvasquery.js"></script> <script type="text/javascript" src="js/canvasquery.dither.js"></script> +<script type="text/javascript" src="js/util.js"></script> <script type="text/javascript"> +var algo = "random" +var frames = [] +var lastGif; + document.getElementById("url").onchange = load setTimeout(load) @@ -37,39 +42,13 @@ function status (s){ el.innerHTML = s + "..." } -function load(imageURL) { +function load () { document.getElementById("save").style.display = "none" status("loading") - var imageURL = proxify( document.getElementById("url").value ); - - if (imageURL.substr(-3) === "gif") { - window.gif = GIF(imageURL); - // gif.on("error", tryToLoadNextImage); - // gif.on("rendered", trackLoadTime); - gif.on("rendered", ready); - return gif.render(); - } else { - window.img = new Image(); - // img.addEventListener("error", tryToLoadNextImage); - img.addEventListener("load", ready); - img.crossOrigin = "anonymous"; - return img.src = imageURL; - } + var imageURL = document.getElementById("url").value + loadImage(imageURL, ready) } -function giveImage() { - if (imageURL.substr(-3) === "gif") { - return gif.frames[gif.currentFrame()].ctx.canvas; - } else { - return img; - } -} - -function proxify (url) { - return "/cgi-bin/proxy?" + url // .replace(/^https?:\/\//, ""); -}; - - function ready(){ status("") var buttons = document.getElementsByTagName("button") @@ -99,7 +78,6 @@ encoder.on("rendered-url", function(url){ document.body.appendChild(image) }) -var lastGif; encoder.on("rendered", function(bits){ status("") lastGif = bits @@ -113,8 +91,7 @@ function save (){ saveAs(blob, filename + "-" + algo + "-" + (+new Date() % 1000) + ".gif"); } -var algo = "random" -var frames = [] + function build(){ document.getElementById("save").style.display = "none" status("dithering") @@ -1,3 +1,41 @@ $.fn.int = function(){ return parseInt($(this).val(),10) } $.fn.float = function(){ return parseFloat($(this).val()) } function clamp(n,a,b){ return n<a?a:n<b?n:b } + +function loadImage(imageURL, callback) { + document.getElementById("save").style.display = "none" + document.getElementById("encode").style.display = "none" + status("loading") + var imageURL = proxify( imageURL ); + + window.gif = window.img = null + + if (imageURL.substr(-3) === "gif") { + window.gif = GIF(imageURL); + // gif.on("error", tryToLoadNextImage); + // gif.on("rendered", trackLoadTime); + gif.on("rendered", callback); + return gif.render(); + } else { + window.img = new Image(); + // img.addEventListener("error", tryToLoadNextImage); + img.addEventListener("load", callback); + img.crossOrigin = "anonymous"; + return img.src = imageURL; + } +} + +function giveImage() { + if (imageURL.substr(-3) === "gif") { + return gif.frames[gif.currentFrame()].ctx.canvas; + } else { + return img; + } +} + +function proxify (url) { + if (url.indexOf("http") == 0) + return "/cgi-bin/proxy?" + url // .replace(/^https?:\/\//, ""); + else + return url +}; diff --git a/js/vendor/gif-encode/client.js b/js/vendor/gif-encode/client.js index a6c09ec..128c93d 100644 --- a/js/vendor/gif-encode/client.js +++ b/js/vendor/gif-encode/client.js @@ -99,7 +99,7 @@ function GifEncoder(){ var ww = []; base.init = function(){ for (var i = 0; i < WORKERS; i++) { - var worker = new Worker('gif-encode/worker.js'); + var worker = new Worker('js/vendor/gif-encode/worker.js'); worker.onmessage = base.receiveWork; ww.push(worker); } |
