I’m converting a image to gray scale in Java with the following code:
BufferedImage originalImage = ImageIO.read(new File("/home/david/input.bmp"));
BufferedImage grayImage = new BufferedImage(originalImage.getWidth()
, originalImage.getHeight()
, BufferedImage.TYPE_BYTE_GRAY);
ColorSpace gray = ColorSpace.getInstance(ColorSpace.CS_GRAY);
ColorConvertOp colorConvert = new ColorConvertOp(gray, null);
colorConvert.filter(originalImage, grayImage);
ImageIO.write(grayImage, "bmp", new File("/home/david/output_java.bmp"));
That seems to work, but the problem is that the output image is very different from the gray scale image generated by gimp (see examples below).
- Can I control someway how is the image generated?
- How I can make the result more similar to the gimp result?
Original image:

Gray scale image generated in Java:

Gray scale image generated in Gimp (Image -> Mode -> Grayscale):

BTW: I have a bunch of images coming from ffmpeg (with gray option) and they are like Gimp images so because of that I want my image in that way.
Finally I’ve wrote
GrayscaleFilterclass implementingBufferedImageOpinterface.I’ve followed this really good guide about Java image processing.
This is the relevant code fragment: