aboutsummaryrefslogtreecommitdiff
path: root/demos/openjpeg.html
diff options
context:
space:
mode:
Diffstat (limited to 'demos/openjpeg.html')
-rw-r--r--demos/openjpeg.html107
1 files changed, 0 insertions, 107 deletions
diff --git a/demos/openjpeg.html b/demos/openjpeg.html
deleted file mode 100644
index 292ecfad..00000000
--- a/demos/openjpeg.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<html>
-<head>
- <title>
- Emscripten: OpenJPEG Demo
- </title>
- <script type="text/javascript">
- arguments = [];
- NO_RUN = 1;
- </script>
- <script src="openjpeg.cc.js"></script>
- <script src="syntensity_lobby.j2k.js"></script>
- <script type="text/javascript">
- // Wrapper around OpenJPEG
- function j2k_to_image(data) {
- run();
- _STDIO.prepare('image.j2k', data);
- callMain(['-i', 'image.j2k', '-o', 'image.raw']);
- return _STDIO.streams[_STDIO.filenames['image.raw']].data;
- }
-
- var imageWidth, imageHeight;
-
- // print function which the runtime will call. We figure out the image dimensions from there
- function print(text) {
- document.getElementById('output').innerHTML += text + '<br>';
- var m = /Component 0 characteristics: (\d+)x(\d+)x(\d+) unsigned/.exec(text);
- if (!m) return;
- imageWidth = m[1];
- imageHeight = m[2];
- document.getElementById('output').innerHTML += '<b>(Image dimensions: ' + [imageWidth, imageHeight] + ')</b><br>';
- }
-
- function render(url) {
- imageWidth = imageHeight = null;
-
- // Demo image by default
- var data = DEMO_FILE;
-
- // If given a URL, fetch it
- if (url && url[0] != '(') {
- try {
- var xhr = new XMLHttpRequest();
- xhr.open("GET", url, false);
- xhr.send(null);
- var buffer = xhr.mozResponseArrayBuffer;
- if (buffer) data = new Uint8Array(buffer);
- } catch(e) {
- alert('Could not load URL: ' + e);
- return;
- }
- }
-
- document.getElementById('output').innerHTML = '';
- output = j2k_to_image(data);
- if (!(imageWidth && imageHeight)) { // We should have figured these values out
- alert('An error occurred.');
- return;
- }
-
- var canvas = document.getElementById('canvas');
- canvas.width = imageWidth;
- canvas.height = imageHeight;
-
- var ctx = canvas.getContext('2d');
- var image = ctx.getImageData(0, 0, canvas.width, canvas.height);
-
- var componentSize = canvas.width*canvas.height;
- for (var y = 0; y < canvas.height; y++) {
- for (var x = 0; x < canvas.width; x++) {
- var value = output[y*canvas.width + x];
- var base = (y*canvas.width + x)*4;
- image.data[base + 0] = output[0*componentSize + y*canvas.width + x];
- image.data[base + 1] = output[1*componentSize + y*canvas.width + x];
- image.data[base + 2] = output[2*componentSize + y*canvas.width + x];
- image.data[base + 3] = 255;
- }
- }
- ctx.putImageData(image, 0, 0);
- }
- </script>
-</head>
-<body>
- <h1>JPEG 2000 on the Web</h1>
- <p>This is a demo of decoding <a href="http://en.wikipedia.org/wiki/JPEG_2000">JPEG 2000</a> images entirely in
- JavaScript. It uses <a href="http://www.openjpeg.org/">OpenJPEG</a>, an open source library for JPEG 2000 images,
- which was compiled to JavaScript using <a href="http://emscripten.org">Emscripten</a>.</p>
- <p>After the image is
- decoded into pixel data, it is rendered using a Canvas element. This demo should therefore work in any web
- browser that supports the Canvas element, whether or not that web browser natively supports the JPEG 2000 format.</p>
- <p><b>Click 'Go!'</b> to render a demo image (from <a href="http://syntensity.com/toplevel/screenshots/">here</a>)
- which has been encoded into a JSON object.
- You can also change the URL to that of a binary JPEG 2000 image, which will be
- downloaded and rendered, but I am not aware of a cross-browser way to receive binary data, so it uses
- a <a href="https://developer.mozilla.org/en/using_xmlhttprequest#Receiving_binary_data_using_JavaScript_typed_arrays">typed array
- property of XHRs</a> (which will only work on Firefox 4).</p>
- <hr>
- <canvas id='canvas' width=1 height=1></canvas>
- <hr>
- <form onsubmit="render(texty.value); return false">
- JPEG 2000 URL: <input type="text" name="texty" size=60 value="(replace this with a URL of a JPEG 2000 file, or just click 'Go!')" onclick="if (value[0] === '(') value=''"><br>
- <input type="submit" value="Go!">
- </form>
- <hr>
- <div id="output" style="font-family: Courier New,Courier,monospace;"></div>
-</body>
-</html>
-