diff --git a/scripts/aux/glitch.js b/scripts/aux/glitch.js index 3dcfafe..caa5499 100644 --- a/scripts/aux/glitch.js +++ b/scripts/aux/glitch.js @@ -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 )