H
harryos
hi
I tried to convert an image to 8bit grayscale using imageJ api.
The code snippet is as follows
...
import ij.IJ;
import ij.ImagePlus;
import ij.process.ImageConverter;
import java.awt.image.BufferedImage;
.....
public static void toGrayscale(){
ImagePlus imp=new ImagePlus("F:\\myimgs\\Picture 001.jpg");
if (imp.getType() == ImagePlus.GRAY8){
System.out.println("gray8");
}else{
System.out.println("orig image color mode="+imp.getType());
ImageConverter ic = new ImageConverter(imp);
ic.convertToGray8();
IJ.saveAs(imp, "png", "F:\\myimgs\\newimage.png");
BufferedImage bufferedImage=imp.getBufferedImage();
if (imp.getType() == ImagePlus.GRAY8){
System.out.println("after conversion, type is gray8");
System.out.println("bufferedImage type is="+
+bufferedImage.getType());
}else{
System.out.println("still imp is="+imp.getType());
System.out.println("bufferedimg type
is="+bufferedImage.getType());
}
}
however ,when I run this using a truecolor image,I get the following
output.
orig image color mode=4 // TYPE_INT_BGR
after conversion, type is gray8
bufferedimg type is=13 // TYPE_BYTE_INDEXED
I am confused by the value 13.Shouldn't it be 10 viz TYPE_BYTE_GRAY ?
can someone tell me why this is happening?
thanks a lot
harry.
I tried to convert an image to 8bit grayscale using imageJ api.
The code snippet is as follows
...
import ij.IJ;
import ij.ImagePlus;
import ij.process.ImageConverter;
import java.awt.image.BufferedImage;
.....
public static void toGrayscale(){
ImagePlus imp=new ImagePlus("F:\\myimgs\\Picture 001.jpg");
if (imp.getType() == ImagePlus.GRAY8){
System.out.println("gray8");
}else{
System.out.println("orig image color mode="+imp.getType());
ImageConverter ic = new ImageConverter(imp);
ic.convertToGray8();
IJ.saveAs(imp, "png", "F:\\myimgs\\newimage.png");
BufferedImage bufferedImage=imp.getBufferedImage();
if (imp.getType() == ImagePlus.GRAY8){
System.out.println("after conversion, type is gray8");
System.out.println("bufferedImage type is="+
+bufferedImage.getType());
}else{
System.out.println("still imp is="+imp.getType());
System.out.println("bufferedimg type
is="+bufferedImage.getType());
}
}
however ,when I run this using a truecolor image,I get the following
output.
orig image color mode=4 // TYPE_INT_BGR
after conversion, type is gray8
bufferedimg type is=13 // TYPE_BYTE_INDEXED
I am confused by the value 13.Shouldn't it be 10 viz TYPE_BYTE_GRAY ?
can someone tell me why this is happening?
thanks a lot
harry.