Image distortion algorithms in JavaScript -


so i'm creating distortions for webapp. want achieve effects similiar photo booth app in mac. it's quite hard find material on web. of artciles (like http://www.splashnology.com/article/pixel-distortions-with-bilinear-filtration-in-html5-canvas/4739/) describe basics. now, example, want make spherize or twirl effect more smooth towards corners, can't find solution. help, ideas, resources? lot!

well, if interested in simple effects waves, here read http://ru.wikipedia.org/wiki/Синусоида, it's ideas in 8th grade (google translation russian english).

 <!doctype html> <html>     <head>         <meta charset="utf-8">         <title></title>         <script src="../js/common.js"></script>         <link rel="stylesheet" href="style.css">         <script>                          addeventlistener('load', function() {                 var cnv = gid('q');                 var ctx = cnv.getcontext('2d');                 // характеризует сдвиг графика по оси oy. Чем больше a, тем выше поднимается график                 var = cnv.height / 2;                 // характеризует растяжение графика по оси oy. Чем больше увеличивается b, тем сильнее возрастает амплитуда колебаний                 var b = 10;                 // характеризует растяжение графика по оси ox. При увеличении c частота колебаний повышается                 var c = .05;                 // характеризует сдвиг графика по оси ox. При увеличении d график двигается в положительном направлении оси абсцисс                 var d = 0;                  (var = 0; < cnv.width; ++i) {                     ctx.fillrect(i, ( + b * math.sin(c * + d) ), 1, 1);                 }                  var cnv1 = gid('e');                 var ctx1 = cnv1.getcontext('2d');                 ctx1.font = 'bold 30px calibri';                 ctx1.filltext('hello', 10, 30);                 var imd = ctx1.getimagedata(0, 0, cnv1.width, cnv1.height);                  var cnv2 = gid('r');                 var ctx2 = cnv2.getcontext('2d');                 ctx2.fillrect(0, 0, cnv2.width, cnv2.height);                 var imd1 = ctx2.getimagedata(0, 0, cnv2.width, cnv2.height);                 var w = imd.width * 4;                  (var = 0, j, x, y, d = imd.data, d1 = imd1.data, l = d.length; < l; += 4) {                     y = math.floor(i / w);                     x = - w * y;                        j =  ( y + math.floor( 10 * math.sin(.01 * x) ) ) * w + x;                     d1[j] = d[i];                     d1[j + 1] = d[i + 1];                     d1[j + 2] = d[i + 2];                     d1[j + 3] = d[i + 3];                 }          ctx2.putimagedata(imd1, 0, 0);             });          </script>     </head>     <body>         <canvas id="q" width="140" height="40"></canvas>         <p>График синусоиды.</p>         <canvas id="e" width="140" height="40"></canvas>         <p>Изображение без искажения.</p>         <canvas id="r" width="140" height="40"></canvas>         <p>Изображение с искажением.</p>     </body> </html> 

Comments

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

css - Make div keyboard-scrollable in jQuery Mobile? -

ruby on rails - Seeing duplicate requests handled with Unicorn -