001 package org.mycore.services.imaging.JAI.imgOperation;
002
003 import java.awt.image.renderable.ParameterBlock;
004
005 import javax.media.jai.Interpolation;
006 import javax.media.jai.JAI;
007 import javax.media.jai.PlanarImage;
008 import javax.media.jai.RenderedOp;
009
010
011 public class MCRJAIScaleOp implements MCRJAIImageOp{
012 protected float scaleFactor;
013
014 public MCRJAIScaleOp(float scaleFactor) {
015 this.scaleFactor = scaleFactor;
016 }
017
018 protected RenderedOp scale(PlanarImage image, float scaleFactor) {
019 if (scaleFactor <= 0.0001)
020 return (RenderedOp) image;
021
022 ParameterBlock pb = new ParameterBlock();
023 pb.addSource(image);
024 pb.add(scaleFactor);
025 pb.add(scaleFactor);
026 pb.add(0f);
027 pb.add(0f);
028 pb.add(Interpolation.getInstance(Interpolation.INTERP_NEAREST));
029 return JAI.create("scale", pb);
030 }
031
032 public RenderedOp executeOp(PlanarImage image){
033 return scale(image, scaleFactor);
034 }
035
036 public int getOrder() {
037 return 0;
038 }
039 }