How do I desaturate a BufferedImage in Java?

前端 未结 1 1142
臣服心动
臣服心动 2021-01-13 05:50

What\'s the simplest way to desaturate a BufferedImage?

相关标签:
1条回答
  • 2021-01-13 06:17

    Use ColorConvertOp:

    public static BufferedImage desaturate(BufferedImage source) {
        ColorConvertOp colorConvert = 
            new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY), null);
        colorConvert.filter(source, source);
    
        return source;
    }
    

    Update :
    There is indeed a simpler way. You can use the GrayFilter class. What's nice about this class is that it provides a static utility method (i.e. createDisabledImage(Image i)) that will return a grayed-out version of the image i.

    That being said, I think the simplest way to desaturate a BufferedImage instance is the following:

    BufferedImage desaturatedImage = GrayFilter.createDisabledImage(originalImage);
    
    0 讨论(0)
提交回复
热议问题