Как обесцветить BufferedImage в Java? - PullRequest
5 голосов
/ 24 июня 2011

Какой самый простой способ обесцветить BufferedImage?

1 Ответ

10 голосов
/ 24 июня 2011

Использование 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);
...