OLD | NEW |
(Empty) | |
| 1 <!DOCTYPE html> |
| 2 <html> |
| 3 <head> |
| 4 |
| 5 <meta charset=utf8> |
| 6 |
| 7 <!-- |
| 8 Copyright (C) 2007 Apple Inc. All rights reserved. |
| 9 Copyright (C) 2010 Mozilla Foundation |
| 10 |
| 11 Redistribution and use in source and binary forms, with or without |
| 12 modification, are permitted provided that the following conditions |
| 13 are met: |
| 14 1. Redistributions of source code must retain the above copyright |
| 15 notice, this list of conditions and the following disclaimer. |
| 16 2. Redistributions in binary form must reproduce the above copyright |
| 17 notice, this list of conditions and the following disclaimer in the |
| 18 documentation and/or other materials provided with the distribution. |
| 19 |
| 20 THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY |
| 21 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| 22 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| 23 PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR |
| 24 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
| 25 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
| 26 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
| 27 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
| 28 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 29 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 30 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 31 --> |
| 32 |
| 33 <title>Kraken JavaScript Benchmark: Gaussian Blur</title> |
| 34 <link rel="stylesheet" href="../kraken.css"> |
| 35 <script> |
| 36 |
| 37 </script> |
| 38 <style> #display { border: 5px solid rgb(0,0,50);}</style> |
| 39 </head> |
| 40 |
| 41 <body> |
| 42 <div id="content"> |
| 43 <h2>Kraken JavaScript Benchmark: Desaturate</h2> |
| 44 <div id="results"> |
| 45 <p>This benchmark <a href="http://en.wikipedia.org/wiki/Colorfulness">desatu
rates</a> a photo using code from <a href="http://www.pixastic.com/">Pixastic</a
>.</p> |
| 46 <p><small>Photo courtesy <a href="http://www.flickr.com/photos/katclay/42965
23922/in/photostream/">Kat Clay</a> from Flickr</small>.</p> |
| 47 <img id="image" src="squid.png" width="400" height="267"> |
| 48 <canvas id="canvas" width="400" height="267"></canvas> |
| 49 <script> |
| 50 /* |
| 51 * Pixastic Lib - Desaturation filter - v0.1.1 |
| 52 * Copyright (c) 2008 Jacob Seidelin, jseidelin@nihilogic.dk, http://blog.
nihilogic.dk/ |
| 53 * License: [http://www.pixastic.com/lib/license.txt] (MPL 1.1) |
| 54 */ |
| 55 |
| 56 var Pixastic = {}; |
| 57 Pixastic.Actions = {}; |
| 58 Pixastic.Actions.desaturate = { |
| 59 process : function(params) { |
| 60 var useAverage = !!(params.options.average && params.options.avera
ge != "false"); |
| 61 var data = params.data; |
| 62 var rect = params.options.rect; |
| 63 var w = rect.width; |
| 64 var h = rect.height; |
| 65 |
| 66 var p = w*h; |
| 67 var pix = p*4, pix1, pix2; |
| 68 |
| 69 if (useAverage) { |
| 70 while (p--) |
| 71 data[pix-=4] = data[pix1=pix+1] = data[pix2=pix+2] = (data
[pix]+data[pix1]+data[pix2])/3 |
| 72 } else { |
| 73 while (p--) |
| 74 data[pix-=4] = data[pix1=pix+1] = data[pix2=pix+2] = (data
[pix]*0.3 + data[pix1]*0.59 + data[pix2]*0.11); |
| 75 } |
| 76 return true; |
| 77 } |
| 78 } |
| 79 |
| 80 function desaturateTest() { |
| 81 var results = document.getElementById('blur-result'); |
| 82 results.innerHTML = "Running test..."; |
| 83 |
| 84 window.setTimeout(function() { |
| 85 var canvas = document.getElementById('canvas'); |
| 86 var ctx = canvas.getContext('2d'); |
| 87 var img = document.getElementById('image') |
| 88 ctx.drawImage(img, 0, 0, img.width, img.height); |
| 89 |
| 90 var imgData = ctx.getImageData(0, 0, canvas.width, canvas.height); |
| 91 var width = imgData.width, height = imgData.height; |
| 92 var data = imgData.data; |
| 93 |
| 94 var len = data.length; |
| 95 var startTime = (new Date()).getTime(); |
| 96 |
| 97 var params = { |
| 98 options: { |
| 99 rect: { width: width, height: height} |
| 100 }, |
| 101 data: imgData.data |
| 102 } |
| 103 Pixastic.Actions.desaturate.process(params); |
| 104 |
| 105 var finishTime = Date.now() - startTime; |
| 106 for (var i = 0; i < data.length; i++) { |
| 107 imgData.data[i] = data[i]; |
| 108 } |
| 109 //imgData.data = data; |
| 110 ctx.putImageData(imgData, 0, 0); |
| 111 results.innerHTML = "Finished: " + finishTime + "ms"; |
| 112 }, 10); |
| 113 } |
| 114 </script> |
| 115 <p><input type="button" value="Desaturate Test" onclick="desaturateTest();">
<span id="blur-result"></span></p> |
| 116 </div> |
| 117 </div> |
| 118 </body> |
| 119 </html> |
OLD | NEW |