Мое приложение получает 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 (): как применить сглаживание?
Однако полученное изображение явно все еще с псевдонимом.