2 * Pixastic Lib - Remove noise - v0.1.0
3 * Copyright (c) 2008 Jacob Seidelin, jseidelin@nihilogic.dk, http://blog.nihilogic.dk/
4 * MIT License [http://www.opensource.org/licenses/mit-license.php]
7 Pixastic
.Actions
.removenoise
= {
8 process : function(params
) {
10 if (Pixastic
.Client
.hasCanvasImageData()) {
11 var data
= Pixastic
.prepareData(params
);
13 var rect
= params
.options
.rect
;
20 var offsetY
= (y
-1)*w4
;
22 var nextY
= (y
== h
) ? y
- 1 : y
;
23 var prevY
= (y
== 1) ? 0 : y
-2;
25 var offsetYPrev
= prevY
*w
*4;
26 var offsetYNext
= nextY
*w
*4;
30 var offset
= offsetY
+ (x
*4-4);
32 var offsetPrev
= offsetYPrev
+ ((x
== 1) ? 0 : x
-2) * 4;
33 var offsetNext
= offsetYNext
+ ((x
== w
) ? x
-1 : x
) * 4;
35 var minR
, maxR
, minG
, maxG
, minB
, maxB
;
37 minR
= maxR
= data
[offsetPrev
];
38 var r1
= data
[offset
-4], r2
= data
[offset
+4], r3
= data
[offsetNext
];
39 if (r1
< minR
) minR
= r1
;
40 if (r2
< minR
) minR
= r2
;
41 if (r3
< minR
) minR
= r3
;
42 if (r1
> maxR
) maxR
= r1
;
43 if (r2
> maxR
) maxR
= r2
;
44 if (r3
> maxR
) maxR
= r3
;
46 minG
= maxG
= data
[offsetPrev
+1];
47 var g1
= data
[offset
-3], g2
= data
[offset
+5], g3
= data
[offsetNext
+1];
48 if (g1
< minG
) minG
= g1
;
49 if (g2
< minG
) minG
= g2
;
50 if (g3
< minG
) minG
= g3
;
51 if (g1
> maxG
) maxG
= g1
;
52 if (g2
> maxG
) maxG
= g2
;
53 if (g3
> maxG
) maxG
= g3
;
55 minB
= maxB
= data
[offsetPrev
+2];
56 var b1
= data
[offset
-2], b2
= data
[offset
+6], b3
= data
[offsetNext
+2];
57 if (b1
< minB
) minB
= b1
;
58 if (b2
< minB
) minB
= b2
;
59 if (b3
< minB
) minB
= b3
;
60 if (b1
> maxB
) maxB
= b1
;
61 if (b2
> maxB
) maxB
= b2
;
62 if (b3
> maxB
) maxB
= b3
;
64 if (data
[offset
] > maxR
) {
66 } else if (data
[offset
] < minR
) {
69 if (data
[offset
+1] > maxG
) {
70 data
[offset
+1] = maxG
;
71 } else if (data
[offset
+1] < minG
) {
72 data
[offset
+1] = minG
;
74 if (data
[offset
+2] > maxB
) {
75 data
[offset
+2] = maxB
;
76 } else if (data
[offset
+2] < minB
) {
77 data
[offset
+2] = minB
;
86 checkSupport : function() {
87 return Pixastic
.Client
.hasCanvasImageData();