Использование ColorConvertOp
:
public static BufferedImage desaturate(BufferedImage source) {
ColorConvertOp colorConvert =
new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY), null);
colorConvert.filter(source, source);
return source;
}
Обновление:
Существует действительно более простой способ. Вы можете использовать класс GrayFilter
. Что хорошо в этом классе, так это то, что он предоставляет статический служебный метод (т. Е. createDisabledImage(Image i)
), который возвращает неактивную версию изображения i
.
При этом, я думаю, самый простой способ обесцветить экземпляр BufferedImage
заключается в следующем:
BufferedImage desaturatedImage = GrayFilter.createDisabledImage(originalImage);