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 iterations;
var quality; var quality;
var seed; var seed;
var offset; var amount;
var base64; var base64;
var byte_array; var byte_array;
var jpg_header_length; var jpg_header_length;
@ -34,7 +34,7 @@ define(
{ {
seed = input.seed / 100; seed = input.seed / 100;
quality = input.quality / 100; quality = input.quality / 100;
offset = input.offset / 100; amount = input.amount / 100;
iterations = input.iterations; iterations = input.iterations;
canvas_helper.resize( canvas, image_data ); canvas_helper.resize( canvas, image_data );
@ -46,7 +46,7 @@ define(
for ( i = 0; i < iterations; i++ ) 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(); img = new Image();
@ -59,19 +59,23 @@ define(
img.src = byteArrayToBase64( byte_array ); 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 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 ); var index = Math.floor( jpg_header_length + px_i );
byte_array[index] = Math.floor( seed * 256 );
byte_array[index] = Math.floor( amount * 256 );
} }
function getBase64FromImageData( image_data, quality ) function getBase64FromImageData( image_data, quality )