Source code: com/arranger/jarl/test/FilterTest.java
1 package com.arranger.jarl.test;
2
3 import junit.framework.TestCase;
4
5 import java.awt.*;
6 import java.awt.image.*;
7 import java.io.File;
8
9 import com.arranger.jarl.util.IOUtil;
10 import com.jhlabs.image.*;
11
12 /**
13 * FilterTest created on Mar 20, 2003
14 */
15 public class FilterTest extends TestCase {
16
17 protected static final String source = "src/com/arranger/jarl/test/filterTest.jpg";
18 protected static final String dest = "src/com/arranger/jarl/test/filterTest_dest.jpg";
19
20 public void testFilter() throws Exception {
21 //get image source
22 Image image = getSourceImage();
23
24 //get image filter
25 ImageFilter imageFilter = getImageFilter();
26
27 //filter image and wait for result
28 image = filterImage(image, imageFilter);
29 save(image);
30 }
31
32 protected void save(Image image) {
33 IOUtil.save(image, new File(dest));
34 }
35
36 protected ImageFilter getImageFilter() {
37 //ImageFilter imageFilter = getTwirlFilter();
38 //ImageFilter imageFilter = getSphereFilter();
39 //ImageFilter imageFilter = getMarbleFilter();
40 //ImageFilter imageFilter = getCrystalizeFilter();
41 ImageFilter imageFilter = getLookupFilter();
42 return imageFilter;
43 }
44
45 protected Image filterImage(Image image, ImageFilter imageFilter) throws InterruptedException {
46 FilteredImageSource filteredImageSource = new FilteredImageSource(image.getSource(), imageFilter);
47 image = Toolkit.getDefaultToolkit().createImage(filteredImageSource);
48 MyObserver myObserver = new MyObserver();
49 image.getWidth(myObserver);
50 while (!myObserver.m_done) {
51 Thread.sleep(100);
52 }
53 return image;
54 }
55
56 protected Image getSourceImage() throws Exception {
57 return Toolkit.getDefaultToolkit().getImage(source);
58 }
59
60 protected ImageFilter getTwirlFilter() {
61 TwirlFilter twirlFilter = new TwirlFilter();
62 twirlFilter.setAngle((float)Math.toRadians(1080));
63 return twirlFilter;
64 }
65
66 protected ImageFilter getSphereFilter() {
67 SphereFilter sphereFilter = new SphereFilter();
68 sphereFilter.setRefractionIndex(9.6f);
69 return sphereFilter;
70 }
71
72 protected ImageFilter getMarbleFilter() {
73 MarbleFilter marbleFilter = new MarbleFilter();
74 marbleFilter.setXScale(21f);
75 marbleFilter.setYScale(24f);
76 marbleFilter.setTurbulence(3);
77 return marbleFilter;
78 }
79
80 protected ImageFilter getCrystalizeFilter() {
81 CrystalizeFilter crystalizeFilter = new CrystalizeFilter();
82 //crystalizeFilter.setScale(34f);
83 //crystalizeFilter.setStretch(.5f);
84 //crystalizeFilter.setAngle((float)Math.toRadians(30));
85 return crystalizeFilter;
86 }
87
88 protected ImageFilter getLookupFilter() {
89 LookupFilter lookupFilter = new LookupFilter();
90 ArrayColormap arrayColormap = new ArrayColormap();
91 arrayColormap.setColorRange(0, 10, 0x0000FF00);
92 arrayColormap.setColorInterpolated(3, 1, 5, 0x00000000);
93 arrayColormap.setColorInterpolated(6, 4, 10, 0x00AA00AA);
94 lookupFilter.setColormap(arrayColormap);
95 return lookupFilter;
96 }
97
98 protected static class MyObserver implements ImageObserver {
99
100 protected boolean m_done = false;
101
102 public boolean imageUpdate(Image img, int infoflags,
103 int x, int y, int width, int height) {
104 m_done = true;
105 return false;
106 }
107 }
108 }