1
1
package project .android .allfiltersexample ;
2
2
3
+ import java .util .ArrayList ;
4
+ import java .util .List ;
5
+
3
6
import project .android .imageprocessing .FastImageProcessingPipeline ;
4
7
import project .android .imageprocessing .FastImageProcessingView ;
5
8
import project .android .imageprocessing .filter .BasicFilter ;
9
+ import project .android .imageprocessing .filter .colour .ColourInvertFilter ;
6
10
import project .android .imageprocessing .filter .colour .ColourMatrixFilter ;
7
11
import project .android .imageprocessing .filter .colour .GreyScaleFilter ;
8
12
import project .android .imageprocessing .filter .colour .HueFilter ;
9
- import project .android .imageprocessing .filter .colour .ImageBrightnessFilter ;
10
- import project .android .imageprocessing .filter .colour .ImageContrastFilter ;
11
- import project .android .imageprocessing .filter .colour .ImageExposureFilter ;
12
- import project .android .imageprocessing .filter .colour .ImageGammaFilter ;
13
- import project .android .imageprocessing .filter .colour .ImageLevelsFilter ;
14
- import project .android .imageprocessing .filter .colour .ImageSaturationFilter ;
13
+ import project .android .imageprocessing .filter .colour .BrightnessFilter ;
14
+ import project .android .imageprocessing .filter .colour .MissEtikateFilter ;
15
+ import project .android .imageprocessing .filter .colour .MonochromeFilter ;
16
+ import project .android .imageprocessing .filter .colour .SoftEleganceFilter ;
17
+ import project .android .imageprocessing .filter .colour .ToneCurveFilter ;
18
+ import project .android .imageprocessing .filter .colour .HighlightShadowFilter ;
19
+ import project .android .imageprocessing .filter .colour .ContrastFilter ;
20
+ import project .android .imageprocessing .filter .colour .LookupFilter ;
21
+ import project .android .imageprocessing .filter .colour .AmatorkaFilter ;
22
+ import project .android .imageprocessing .filter .colour .ExposureFilter ;
23
+ import project .android .imageprocessing .filter .colour .GammaFilter ;
24
+ import project .android .imageprocessing .filter .colour .LevelsFilter ;
25
+ import project .android .imageprocessing .filter .colour .SaturationFilter ;
26
+ import project .android .imageprocessing .filter .colour .FalseColourFilter ;
15
27
import project .android .imageprocessing .filter .colour .RGBFilter ;
28
+ import project .android .imageprocessing .filter .colour .HazeFilter ;
29
+ import project .android .imageprocessing .filter .colour .SepiaFilter ;
30
+ import project .android .imageprocessing .filter .colour .OpacityFilter ;
31
+ import project .android .imageprocessing .filter .colour .LuminanceThresholdFilter ;
32
+ import project .android .imageprocessing .filter .colour .AdaptiveThresholdFilter ;
33
+ import project .android .imageprocessing .filter .colour .ChromaKeyFilter ;
16
34
import project .android .imageprocessing .filter .processing .ConvolutionFilter ;
35
+ import project .android .imageprocessing .filter .processing .GaussianBlurFilter ;
36
+ import project .android .imageprocessing .filter .processing .BoxBlurFilter ;
17
37
import project .android .imageprocessing .input .ImageResourceInput ;
18
- import project .android .imageprocessing .output .Mp4VideoFileEndpoint ;
19
38
import project .android .imageprocessing .output .ScreenEndpoint ;
20
39
import android .os .Bundle ;
21
- import android .os .Environment ;
22
40
import android .app .Activity ;
41
+ import android .graphics .Point ;
23
42
import android .util .Log ;
24
- import android .view .Menu ;
25
43
import android .view .MotionEvent ;
26
44
import android .view .View ;
27
45
import android .view .Window ;
30
48
public class ImageProcessingActivity extends Activity {
31
49
32
50
private FastImageProcessingView view ;
33
- private BasicFilter [] filters ;
51
+ private List < BasicFilter > filters ;
34
52
private int curFilter ;
35
53
private ImageResourceInput image ;
36
54
private long touchTime ;
37
55
private FastImageProcessingPipeline pipeline ;
38
56
private ScreenEndpoint screen ;
39
- private int numOfFilters = 11 ;
40
- private int i ;
41
57
42
58
private void addFilter (BasicFilter filter ) {
43
- filters [i ] = filter ;
44
- i ++;
59
+ filters .add (filter );
45
60
}
46
61
47
62
@ Override
@@ -54,9 +69,28 @@ protected void onCreate(Bundle savedInstanceState) {
54
69
view .setPipeline (pipeline );
55
70
setContentView (view );
56
71
image = new ImageResourceInput (view , this , R .drawable .tiger );
57
- filters = new BasicFilter [numOfFilters ];
72
+ filters = new ArrayList <BasicFilter >();
73
+ Log .e ("FilterTest" ,"starting" );
74
+ addFilter (new ChromaKeyFilter (new float [] {1.0f , 0.3f , 0.0f }, 0.4f , 0.1f ));
75
+ addFilter (new AdaptiveThresholdFilter ());
76
+ addFilter (new BoxBlurFilter ());
77
+ addFilter (new LuminanceThresholdFilter (0.4f ));
78
+ addFilter (new OpacityFilter (0.5f ));
79
+ addFilter (new SepiaFilter ());
80
+ addFilter (new HazeFilter (0.3f ,0.1f ));
81
+ addFilter (new FalseColourFilter (new float []{0.0f ,0.0f ,0.5f }, new float []{1.0f ,0.0f ,0.0f }));
82
+ addFilter (new MonochromeFilter (new float []{1.0f ,0.8f ,0.8f }, 1.0f ));
83
+ addFilter (new ColourInvertFilter ());
84
+ addFilter (new SoftEleganceFilter (this ));
85
+ addFilter (new GaussianBlurFilter (2.3f ));
86
+ addFilter (new MissEtikateFilter (this ));
87
+ addFilter (new AmatorkaFilter (this ));
88
+ addFilter (new LookupFilter (this , R .drawable .lookup_soft_elegance_1 ));
89
+ addFilter (new HighlightShadowFilter (0f , 1f ));
90
+ Point [] defaultCurve = new Point [] {new Point (128 ,128 ), new Point (64 ,0 ), new Point (192 ,255 )};
91
+ addFilter (new ToneCurveFilter (defaultCurve ,defaultCurve ,defaultCurve ,defaultCurve ));
58
92
addFilter (new HueFilter (3.14f /6f ));
59
- addFilter (new ImageBrightnessFilter (0.5f ));
93
+ addFilter (new BrightnessFilter (0.5f ));
60
94
addFilter (new ColourMatrixFilter (new float []{ 0.33f ,0f ,0f ,0f ,
61
95
0f ,0.67f ,0f ,0f ,
62
96
0f ,0f ,1.34f ,0f ,
@@ -69,17 +103,17 @@ protected void onCreate(Bundle savedInstanceState) {
69
103
1 /25f ,1 /25f ,1 /25f ,1 /25f ,1 /25f ,
70
104
1 /25f ,1 /25f ,1 /25f ,1 /25f ,1 /25f ,
71
105
1 /25f ,1 /25f ,1 /25f ,1 /25f ,1 /25f }, 5 , 5 ));
72
- addFilter (new ImageExposureFilter (0.95f ));
73
- addFilter (new ImageContrastFilter (1.5f ));
74
- addFilter (new ImageSaturationFilter (0.5f ));
75
- addFilter (new ImageGammaFilter (1.75f ));
76
- addFilter (new ImageLevelsFilter (0.2f ,0.8f ,1f ,0f ,1f ));
106
+ addFilter (new ExposureFilter (0.95f ));
107
+ addFilter (new ContrastFilter (1.5f ));
108
+ addFilter (new SaturationFilter (0.5f ));
109
+ addFilter (new GammaFilter (1.75f ));
110
+ addFilter (new LevelsFilter (0.2f ,0.8f ,1f ,0f ,1f ));
77
111
78
112
screen = new ScreenEndpoint (pipeline );
79
113
80
114
image .addTarget (screen );
81
- for (int i = 0 ; i < numOfFilters ; i ++ ) {
82
- filters [ i ] .addTarget (screen );
115
+ for (BasicFilter filter : filters ) {
116
+ filter .addTarget (screen );
83
117
}
84
118
85
119
pipeline .setRootRenderer (image );
@@ -92,13 +126,13 @@ public boolean onTouch(View v, MotionEvent e) {
92
126
if (curFilter == 0 ) {
93
127
image .removeTarget (screen );
94
128
} else {
95
- image .removeTarget (filters [ curFilter -1 ] );
129
+ image .removeTarget (filters . get ( curFilter -1 ) );
96
130
}
97
- curFilter =(curFilter +1 )%(numOfFilters +1 );
131
+ curFilter =(curFilter +1 )%(filters . size () +1 );
98
132
if (curFilter == 0 ) {
99
133
image .addTarget (screen );
100
134
} else {
101
- image .addTarget (filters [ curFilter -1 ] );
135
+ image .addTarget (filters . get ( curFilter -1 ) );
102
136
}
103
137
pipeline .startRendering ();
104
138
view .requestRender ();
0 commit comments