How do I desaturate a BufferedImage in Java?

雨燕双飞 提交于 2019-12-01 03:14:29

问题


What's the simplest way to desaturate a BufferedImage?


回答1:


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);


来源:https://stackoverflow.com/questions/6471340/how-do-i-desaturate-a-bufferedimage-in-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!