import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
-
-import javax.media.jai.InterpolationBicubic;
-import javax.media.jai.*;
+import javax.media.jai.ImageLayout;
+import javax.media.jai.InterpolationBilinear;
+import javax.media.jai.JAI;
import javax.media.jai.ParameterBlockJAI;
import javax.media.jai.PlanarImage;
-import java.awt.image.*;
-import java.awt.*;
-
-import mir.log.LoggerWrapper;
+import java.awt.RenderingHints;
+import java.awt.image.ColorModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.PixelInterleavedSampleModel;
import com.sun.media.jai.codec.ByteArraySeekableStream;
import com.sun.media.jai.codec.FileSeekableStream;
import com.sun.media.jai.codec.SeekableStream;
+import mir.log.LoggerWrapper;
+
/**
*
* <p>Title: Image processor</p>
public ImageProcessor(SeekableStream anImageStream) throws IOException {
PlanarImage tempImage = JAI.create("stream", anImageStream);
+ ParameterBlockJAI params = new ParameterBlockJAI("format");
+ int bands[];
+ int nrComponents;
- ParameterBlockJAI params = new ParameterBlockJAI("format");
params.addSource(tempImage);
params.setParameter("dataType", DataBuffer.TYPE_BYTE);
ImageLayout layout = new ImageLayout();
+ nrComponents = tempImage.getColorModel().getNumColorComponents();
+
+/* System.out.println("blaat sample model = " + tempImage.getSampleModel().toString());
+ System.out.println("blaat color model = " + tempImage.getColorModel().toString());
+ System.out.println("blaat nr color components = " + tempImage.getColorModel().getNumColorComponents());
+ System.out.println("blaat nr components = " + tempImage.getColorModel().getNumComponents());
+ */
+ bands = new int[nrComponents];
+ for (int i=0; i<nrComponents; i++)
+ bands[i]=i;
+
+
+
layout.setColorModel(ColorModel.getRGBdefault());
layout.setSampleModel(
new PixelInterleavedSampleModel(DataBuffer.TYPE_BYTE,
- layout.getSampleModel(tempImage).getWidth(),
- layout.getSampleModel(tempImage).getHeight(),
- 3,
- 3*layout.getSampleModel(tempImage).getWidth(),
- new int[] {2,1,0}));
+ tempImage.getWidth(),
+ tempImage.getHeight(),
+ nrComponents,
+ nrComponents*tempImage.getWidth(),
+ bands));
RenderingHints hints = new RenderingHints(JAI.KEY_IMAGE_LAYOUT, layout);
}
public void writeScaledData(OutputStream aStream, String anImageType) {
-
-// ParameterBlockJAI params = new ParameterBlockJAI("BandSelect");
-// params.addSource(scaledImage);
-// params.setParameter("bandIndices", new int[] {0,1,2});
-// PlanarImage tempImage = JAI.create("BandSelect", params);
-
JAI.create("encode", scaledImage, aStream, anImageType, null);
}