update glitch logic

Georg Fischer 2013-06-27 16:31:27 +02:00
parent 93e8b4a124
commit 563a1fb05e

@ -18,7 +18,7 @@ define(
var iterations;
var quality;
var seed;
var offset;
var amount;
var base64;
var byte_array;
var jpg_header_length;
@ -34,7 +34,7 @@ define(
{
seed = input.seed / 100;
quality = input.quality / 100;
offset = input.offset / 100;
amount = input.amount / 100;
iterations = input.iterations;
canvas_helper.resize( canvas, image_data );
@ -46,7 +46,7 @@ define(
for ( i = 0; i < iterations; i++ )
{
glitchJpegBytes( byte_array, jpg_header_length, seed, offset, i );
glitchJpegBytes( byte_array, jpg_header_length, seed, amount, i, iterations );
}
img = new Image();
@ -59,19 +59,23 @@ define(
img.src = byteArrayToBase64( byte_array );
}
function glitchJpegBytes( byte_array, jpg_header_length, seed, offset, iteration )
function glitchJpegBytes( byte_array, jpg_header_length, seed, amount, i, len )
{
var it = ( iteration + 1 ) / 10;
var max_index = byte_array.length - jpg_header_length - 4;
var px_index = it * max_index + offset * 10;
var px_min = parseInt( max_index / len * i, 10 );
var px_max = parseInt( max_index / len * ( i + 1 ), 10 );
if ( px_index > max_index )
var delta = px_max - px_min;
var px_i = parseInt( px_min + delta * seed, 10 );
if ( px_i > max_index )
{
px_index = px_index;
px_i = max_index;
}
var index = Math.floor( jpg_header_length + px_index );
byte_array[index] = Math.floor( seed * 256 );
var index = Math.floor( jpg_header_length + px_i );
byte_array[index] = Math.floor( amount * 256 );
}
function getBase64FromImageData( image_data, quality )