annotate servlet/src/digilib/io/ImageFile.java @ 590:69bc69381ac4 stream

more work on stream input and more cleanup
author robcast
date Thu, 06 Jan 2011 20:42:29 +0100
parents aee436f0549d
children 2b58d2783ef0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
1 /* ImageFile.java -- digilib image file class.
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
2
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
3 Digital Image Library servlet components
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
4
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
5 Copyright (C) 2003 Robert Casties (robcast@mail.berlios.de)
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
6
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
7 This program is free software; you can redistribute it and/or modify it
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
9 Free Software Foundation; either version 2 of the License, or (at your
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
10 option) any later version.
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
11
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
12 Please read license.txt for the full details. A copy of the GPL
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
13 may be found at http://www.gnu.org/copyleft/lgpl.html
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
14
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
15 You should have received a copy of the GNU General Public License
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
16 along with this program; if not, write to the Free Software
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
18
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
19 * Created on 25.02.2003
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
20 */
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
21
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
22 package digilib.io;
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
23
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
24 import java.io.File;
590
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
25 import java.io.FileNotFoundException;
585
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
26 import java.io.IOException;
590
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
27 import java.io.RandomAccessFile;
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
28
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
29 import javax.imageio.stream.FileImageInputStream;
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
30 import javax.imageio.stream.ImageInputStream;
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
31
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
32 import digilib.image.ImageSize;
585
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
33 import digilib.servlet.DigilibConfiguration;
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
34
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
35 /**
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
36 * @author casties
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
37 */
568
34701340922e more starting stream support
robcast
parents: 566
diff changeset
38 public class ImageFile extends ImageInput {
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
39
583
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
40 // file
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
41 private File file = null;
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
42 // file name
583
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
43 private String name = null;
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
44 // parent directory
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
45 private Directory dir = null;
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
46
583
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
47 /** Constructor with File.
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
48 *
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
49 * @param f
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
50 * @param parent
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
51 * @param dir
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
52 */
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
53 public ImageFile(File f, ImageSet parent, Directory dir) {
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
54 this.file = f;
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
55 this.name = f.getName();
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
56 this.parent = parent;
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
57 this.dir = dir;
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
58 }
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
59
583
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
60 /** Constructor with filename (without path).
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
61 * @param fn
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
62 * @param parent
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
63 * @param dir
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
64 */
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
65 public ImageFile(String fn, ImageSet parent, Directory dir) {
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
66 this.name = fn;
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
67 this.dir = dir;
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
68 this.file = new File(this.dir.getDir(), fn);
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
69 this.parent = parent;
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
70 }
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
71
585
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
72
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
73 /** Checks the image and sets size and type.
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
74 *
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
75 */
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
76 public void check() {
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
77 if (pixelSize == null) {
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
78 try {
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
79 // use the configured toolkit to identify the image
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
80 DigilibConfiguration.identifyDocuImage(this);
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
81 } catch (IOException e) {
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
82 // nothing much to do...
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
83 }
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
84 }
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
85 }
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
86
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
87 /* (non-Javadoc)
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
88 * @see digilib.io.ImageInput#getSize()
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
89 */
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
90 @Override
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
91 public ImageSize getSize() {
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
92 check();
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
93 return pixelSize;
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
94 }
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
95
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
96 /* (non-Javadoc)
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
97 * @see digilib.io.ImageInput#getMimetype()
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
98 */
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
99 @Override
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
100 public String getMimetype() {
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
101 check();
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
102 return mimetype;
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
103 }
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
104
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
105 /* (non-Javadoc)
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
106 * @see digilib.io.ImageInput#getAspect()
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
107 */
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
108 @Override
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
109 public float getAspect() {
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
110 check();
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
111 return (pixelSize != null) ? pixelSize.getAspect() : 0f;
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
112 }
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
113
95417c4615b8 more cleanup for ImageFileSet
robcast
parents: 583
diff changeset
114 /** Returns the file name (without path).
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
115 *
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
116 * @return
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
117 */
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
118 public String getName() {
583
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
119 return name;
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
120 }
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
121
590
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
122
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
123 /* (non-Javadoc)
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
124 * @see digilib.io.ImageInput#hasImageInputStream()
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
125 */
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
126 @Override
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
127 public boolean hasImageInputStream() {
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
128 return true;
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
129 }
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
130
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
131 /* (non-Javadoc)
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
132 * @see digilib.io.ImageInput#getImageInputStream()
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
133 */
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
134 @Override
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
135 public ImageInputStream getImageInputStream() {
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
136 try {
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
137 RandomAccessFile rf = new RandomAccessFile(file, "r");
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
138 return new FileImageInputStream(rf);
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
139 } catch (IOException e) {
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
140 // what now?
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
141 }
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
142 return null;
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
143 }
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
144
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
145 /* (non-Javadoc)
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
146 * @see digilib.io.ImageInput#hasFile()
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
147 */
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
148 @Override
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
149 public boolean hasFile() {
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
150 return true;
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
151 }
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
152
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
153 /* (non-Javadoc)
69bc69381ac4 more work on stream input and more cleanup
robcast
parents: 588
diff changeset
154 * @see digilib.io.ImageInput#getFile()
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
155 */
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
156 public File getFile() {
583
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
157 return file;
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
158 }
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
159
566
50f291d808b1 starting stream support
robcast
parents: 463
diff changeset
160 /* (non-Javadoc)
568
34701340922e more starting stream support
robcast
parents: 566
diff changeset
161 * @see digilib.io.ImageInput#setSize(digilib.image.ImageSize)
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
162 */
568
34701340922e more starting stream support
robcast
parents: 566
diff changeset
163 public void setSize(ImageSize imageSize) {
34701340922e more starting stream support
robcast
parents: 566
diff changeset
164 this.pixelSize = imageSize;
34701340922e more starting stream support
robcast
parents: 566
diff changeset
165 // pass on to parent
34701340922e more starting stream support
robcast
parents: 566
diff changeset
166 if (this.parent != null) {
34701340922e more starting stream support
robcast
parents: 566
diff changeset
167 this.parent.setAspect(imageSize);
34701340922e more starting stream support
robcast
parents: 566
diff changeset
168 }
566
50f291d808b1 starting stream support
robcast
parents: 463
diff changeset
169 }
50f291d808b1 starting stream support
robcast
parents: 463
diff changeset
170
576
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
171 /* (non-Javadoc)
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
172 * @see java.lang.Object#toString()
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
173 */
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
174 @Override
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
175 public String toString() {
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
176 // try to use File.toString
583
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
177 if (file != null) {
7357ad8f9f42 more ripping apart ImageFileSet
robcast
parents: 576
diff changeset
178 return file.toString();
576
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
179 }
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
180 return super.toString();
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
181 }
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
182
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
183
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
184 }