问题
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