基于廊坊系统为基础,国防科技大学系统演示Demo
surprise
2024-04-28 c310c155e3e91e6b285b3fb3519a3ef7c6690d66
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
48
49
50
51
52
53
54
55
56
57
58
59
//function sendStatus(statusText) {
 
//    postMessage({"type": "status","statusText": statusText});
 
//}
 
self.addEventListener('message', function (e) {
    var data = e.data;
    // Data
    //---------
    // nullValue
    //nullTolerance
    // canvasData
    // width
    // height
    // startX
 
    //sendStatus("Worker started blur on data in range: " +
        //data.startX + "-" + (data.startX + data.width));
    // 
    
    var pix = data.canvasData;
 
    var nullColor = data.nullValue;
    var tolerance = (data.nullTolerance != undefined) ? data.nullTolerance : 0;
    var r, g, b, i;
    var nr = nullColor.r,
        ng = nullColor.g,
        nb = nullColor.b,
        length = pix.length;
 
    for (i = 0; i < length; i += 4) {
         r = pix[i],
         g = pix[i + 1],
         b = pix[i + 2];
 
         if (!tolerance) {
             if (r == nr && g == ng && b == nb) {
 
                 //pix[i] = r;
                 //pix[i + 1] = g;
                 //pix[i + 2] = b;
                 pix[i + 3] = 0;
             }
         } else if (pix[i+3] != 0 ) { 
             if (Math.abs(r - nr) <= tolerance && Math.abs(g - ng) <= tolerance && Math.abs(b - nb) <= tolerance)
             {
                 pix[i + 3] = 0;
             }
         }
    }
    data.canvasData = pix;
    
    postMessage(data);
 
    //sendStatus("Finished blur on data in range: " +
    //                data.startX + "-" + (data.width + data.startX));
 
});