diff servlet/src/digilib/image/ImageLoaderDocuImage.java @ 570:fd2ef7e46119

more cleanup, set version to 1.8.2
author robcast
date Tue, 21 Dec 2010 20:24:09 +0100
parents 8beefd1142b2
children beeedf90cb81
line wrap: on
line diff
--- a/servlet/src/digilib/image/ImageLoaderDocuImage.java	Tue Dec 21 09:52:16 2010 +0100
+++ b/servlet/src/digilib/image/ImageLoaderDocuImage.java	Tue Dec 21 20:24:09 2010 +0100
@@ -45,6 +45,7 @@
 import javax.imageio.stream.FileImageInputStream;
 import javax.imageio.stream.ImageInputStream;
 import javax.imageio.stream.ImageOutputStream;
+import javax.servlet.ServletException;
 
 import digilib.io.FileOpException;
 import digilib.io.FileOps;
@@ -56,7 +57,7 @@
 
 	/** image object */
 	protected BufferedImage img;
-
+	
 	/** interpolation type */
 	protected RenderingHints renderHint;
 
@@ -88,33 +89,28 @@
 		}
 	}
 
-	public int getHeight() {
-		int h = 0;
-		try {
-			if (img == null) {
-				h = reader.getHeight(0);
-			} else {
-				h = img.getHeight();
-			}
-		} catch (IOException e) {
-			logger.debug("error in getHeight", e);
-		}
-		return h;
-	}
-
-	public int getWidth() {
-		int w = 0;
-		try {
-			if (img == null) {
-				w = reader.getWidth(0);
-			} else {
-				w = img.getWidth();
-			}
-		} catch (IOException e) {
-			logger.debug("error in getHeight", e);
-		}
-		return w;
-	}
+    /* returns the size of the current image */
+    public ImageSize getSize() {
+        ImageSize is = null;
+        // TODO: do we want to cache imageSize?
+        int h = 0;
+        int w = 0;
+        try {
+            if (img == null) {
+                // get size from ImageReader
+                h = reader.getHeight(0);
+                w = reader.getWidth(0);
+            } else {
+                // get size from image
+                h = img.getHeight();
+                w = img.getWidth();
+            }
+            is = new ImageSize(w, h);
+        } catch (IOException e) {
+            logger.debug("error in getSize:", e);
+        }
+        return is;
+    }
 
 	/* returns a list of supported image formats */
 	public Iterator<String> getSupportedFormats() {
@@ -229,7 +225,7 @@
 
 	/* write image of type mt to Stream */
 	public void writeImage(String mt, OutputStream ostream)
-			throws FileOpException {
+			throws ImageOpException, ServletException {
 		logger.debug("writeImage");
 		// setup output
 		ImageWriter writer = null;
@@ -255,7 +251,7 @@
 				writer = (ImageWriter) ImageIO.getImageWritersByFormatName(
 						"jpeg").next();
 				if (writer == null) {
-					throw new FileOpException("Unable to get JPEG writer");
+					throw new ImageOpException("Unable to get JPEG writer");
 				}
 				ImageWriteParam param = writer.getDefaultWriteParam();
 				if (quality > 1) {
@@ -276,18 +272,19 @@
 				writer = (ImageWriter) ImageIO.getImageWritersByFormatName(
 						"png").next();
 				if (writer == null) {
-					throw new FileOpException("Unable to get PNG writer");
+					throw new ImageOpException("Unable to get PNG writer");
 				}
 				writer.setOutput(imgout);
 				logger.debug("writing");
 				writer.write(img);
 			} else {
 				// unknown mime type
-				throw new FileOpException("Unknown mime type: " + mt);
+				throw new ImageOpException("Unknown mime type: " + mt);
 			}
 
 		} catch (IOException e) {
-			throw new FileOpException("Error writing image.");
+		    logger.error("Error writing image:", e);
+			throw new ServletException("Error writing image:", e);
 		} finally {
 			// clean up
 			if (writer != null) {