comparison servlet/src/digilib/image/ImageLoaderDocuImage.java @ 829:a630d0303cce stream

new servlet operation colop=grayscale.
author robcast
date Fri, 25 Feb 2011 11:34:49 +0100
parents f210731dc6cc
children 30037e93ec2a
comparison
equal deleted inserted replaced
828:ba708c57e57c 829:a630d0303cce
20 package digilib.image; 20 package digilib.image;
21 21
22 import java.awt.Image; 22 import java.awt.Image;
23 import java.awt.Rectangle; 23 import java.awt.Rectangle;
24 import java.awt.RenderingHints; 24 import java.awt.RenderingHints;
25 import java.awt.color.ColorSpace;
25 import java.awt.geom.AffineTransform; 26 import java.awt.geom.AffineTransform;
26 import java.awt.geom.Rectangle2D; 27 import java.awt.geom.Rectangle2D;
27 import java.awt.image.AffineTransformOp; 28 import java.awt.image.AffineTransformOp;
28 import java.awt.image.BufferedImage; 29 import java.awt.image.BufferedImage;
30 import java.awt.image.ColorConvertOp;
29 import java.awt.image.ConvolveOp; 31 import java.awt.image.ConvolveOp;
30 import java.awt.image.Kernel; 32 import java.awt.image.Kernel;
31 import java.awt.image.RescaleOp; 33 import java.awt.image.RescaleOp;
32 import java.io.IOException; 34 import java.io.IOException;
33 import java.io.OutputStream; 35 import java.io.OutputStream;
44 import javax.imageio.stream.FileImageInputStream; 46 import javax.imageio.stream.FileImageInputStream;
45 import javax.imageio.stream.ImageInputStream; 47 import javax.imageio.stream.ImageInputStream;
46 import javax.imageio.stream.ImageOutputStream; 48 import javax.imageio.stream.ImageOutputStream;
47 import javax.servlet.ServletException; 49 import javax.servlet.ServletException;
48 50
51 import digilib.image.DocuImage.ColorOp;
49 import digilib.io.FileOpException; 52 import digilib.io.FileOpException;
50 import digilib.io.FileOps; 53 import digilib.io.FileOps;
51 import digilib.io.ImageInput; 54 import digilib.io.ImageInput;
52 import digilib.util.ImageSize; 55 import digilib.util.ImageSize;
53 56
418 * The number of constants must match the number of bands in the image. 421 * The number of constants must match the number of bands in the image.
419 * We do only 3 (RGB) bands. 422 * We do only 3 (RGB) bands.
420 */ 423 */
421 int ncol = img.getColorModel().getNumColorComponents(); 424 int ncol = img.getColorModel().getNumColorComponents();
422 if ((ncol != 3) || (rgbm.length != 3) || (rgba.length != 3)) { 425 if ((ncol != 3) || (rgbm.length != 3) || (rgba.length != 3)) {
423 logger 426 logger.debug("ERROR(enhance): unknown number of color bands or coefficients ("
424 .debug("ERROR(enhance): unknown number of color bands or coefficients ("
425 + ncol + ")"); 427 + ncol + ")");
426 return; 428 return;
427 } 429 }
428 RescaleOp scaleOp = new RescaleOp(rgbOrdered(rgbm), rgbOrdered(rgba), 430 RescaleOp scaleOp = new RescaleOp(rgbOrdered(rgbm), rgbOrdered(rgba),
429 null); 431 null);
470 } 472 }
471 } 473 }
472 return fb; 474 return fb;
473 } 475 }
474 476
477 /*
478 * (non-Javadoc)
479 *
480 * @see
481 * digilib.image.DocuImageImpl#colorOp(digilib.image.DocuImage.ColorOps)
482 */
483 public void colorOp(ColorOp op) throws ImageOpException {
484 if (op == ColorOp.GRAYSCALE) {
485 // convert image to grayscale
486 ColorConvertOp colop = new ColorConvertOp(
487 ColorSpace.getInstance(ColorSpace.CS_GRAY), null);
488 img = colop.filter(img, null);
489 }
490 }
491
475 public void rotate(double angle) throws ImageOpException { 492 public void rotate(double angle) throws ImageOpException {
476 // setup rotation 493 // setup rotation
477 double rangle = Math.toRadians(angle); 494 double rangle = Math.toRadians(angle);
478 // create offset to make shure the rotated image has no negative 495 // create offset to make shure the rotated image has no negative
479 // coordinates 496 // coordinates