Применить сглаживание к BufferedImage - PullRequest
1 голос
/ 13 мая 2019

Мое приложение получает BufferedImage из какого-либо внешнего источника. Это изображение должно быть сгенерировано в другом месте, и я должен использовать его в качестве входных данных для моей функции.

К сожалению, в некоторых случаях я получу изображения, которые содержат неровные линии, поэтому следует применять сглаживание.

До сих пор я нашел много способов сделать это до , имеющего объект BufferedImage, т.е. , устанавливающий соответствующие подсказки рендеринга для объекта Graphics2D и затем рендеринга, но это не применимо в моей ситуации.

Есть ли какой-нибудь простой способ сделать это, не прибегая к сторонним библиотекам (из-за проблем с лицензией)? Нужно ли мне писать свою собственную функцию сглаживания-постпроцессинга?

Я пробовал например:

/**
     * @brief apply antialiasing to {@link BufferedImage} object. Take note that this will also increase image dimensions by 2px!
     * @param image
     * @return
     */
    public static BufferedImage applyAntialiasing( BufferedImage image )
    {
        BufferedImage antialiasedImage = new BufferedImage( image.getWidth() + 2, image.getHeight() + 2, BufferedImage.TYPE_INT_ARGB );
        Graphics2D g = ( Graphics2D ) antialiasedImage.createGraphics();
        ( ( Graphics2D ) g ).setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON );
        g.drawImage( image, 1, 1, null );
        g.dispose();
        return antialiasedImage;
    }

на основе:

Java Graphics2D drawImage () и clip (): как применить сглаживание?

Однако полученное изображение явно все еще с псевдонимом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...