1 package org.molwind.io;
2
3 import java.awt.image.BufferedImage;
4 import java.io.File;
5 import java.io.IOException;
6 import javax.imageio.ImageIO;
7
8
9 import org.apache.commons.collections.map.LRUMap;
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 public class ImageFileCache {
36
37
38 private static LRUMap imageCache;
39
40
41
42
43
44
45
46
47
48
49
50 public LRUMap getImageCache() {
51 return imageCache;
52 }
53
54
55
56
57
58 public void set(LRUMap newCache) {
59 this.imageCache = newCache;
60 }
61
62
63
64
65
66
67
68
69
70 public ImageFileCache(){
71 imageCache = new LRUMap();
72
73 }
74
75
76
77
78
79
80
81
82 public ImageFileCache(int size){
83 imageCache = new LRUMap(size);
84 }
85
86
87
88
89
90
91
92 public static ImageFileCache getInstance() {
93 return new ImageFileCache();
94 }
95
96
97
98
99
100
101
102
103
104
105 public void update(final File imageFile, final ImageFileCache imageFileCache)
106 throws IOException{
107
108 Object image = imageFileCache.getImage(imageFile.getName());
109 if(image == null)
110 imageFileCache.putImage(imageFile);
111
112 }
113
114
115
116
117
118
119
120
121 public BufferedImage getImage(String fileName){
122 return (BufferedImage)imageCache.get(fileName);
123
124 }
125
126
127
128
129
130
131
132
133 public void putImage(File imageFile)
134 throws IOException{
135 BufferedImage bImage = getImageFromFile(imageFile);
136 if(bImage != null)
137 imageCache.put(imageFile.getName(),bImage);
138
139 }
140
141 private BufferedImage getImageFromFile(File imageFile)
142 throws IOException {
143
144 if (!imageFile.exists()) {
145 return null;
146 }
147 return ImageIO.read(imageFile);
148 }
149
150
151
152
153
154
155
156
157
158 public BufferedImage getImage(final File imageFile) {
159 Object image = imageCache.get(imageFile.getName());
160 if(image != null)
161 return (BufferedImage) image;
162 return null;
163 }
164
165 }