-
Notifications
You must be signed in to change notification settings - Fork 2
/
gifworker.js
47 lines (42 loc) · 1.19 KB
/
gifworker.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
importScripts('gif/LZWEncoder.js', 'gif/NeuQuant.js', 'gif/GIFEncoder.js', 'gif/b64.js');
var gif_encoder = 0;
self.addEventListener('message', function(e)
{
var p;
switch (e.data.cmd)
{
case 'start':
p = e.data;
gif_start(p.loop, p.time, p.wid, p.hei, p.trans, p.trans_color);
postMessage({cmd:"start"}/*{shader:val_shader,out:out}*/);
break;
case 'params':
p = e.data;
if (gif_encoder)
{
gif_encoder.setDelay(p.time);
postMessage({cmd:"params"});
}
break;
case 'frame':
p = e.data;
gif_encoder.addFrame(p.frame, true);
postMessage({cmd:"frame"}/*{shader:val_shader,out:out}*/);
break;
case 'save':
p = e.data;
gif_encoder.finish();
postMessage({cmd:"gif", gif:encode64(gif_encoder.stream().getData())})
break;
}
}, false);
function gif_start(loop, time, wid, hei, trans, trans_color)
{
gif_encoder = new GIFEncoder();
if (loop) gif_encoder.setRepeat(0);
gif_encoder.setDelay(time);
// gif_encoder.setTransparent(trans ? trans_color : null)
gif_encoder.setSize(wid, hei);
gif_encoder.setComment("Generated by Geometric Photo Filter - http://face.haluska.sk");
gif_encoder.start();
}