Я хочу изменить размер изображения до меньшего размера, подходящего для миниатюр, и экспортировать его.Проблема в том, что результирующее изображение выглядит очень плохо с большим количеством видимых псевдонимов, как будто оно использует действительно простой алгоритм.
Я читал много статей об этом, которые предлагают использовать подсказки рендеринга для обеспечения качественного рендеринга и бикубической интерполяции.но они, похоже, ни на что не влияют, похоже, они просто не относятся к окончательному изображению.Я также попробовал подсказки по сглаживанию (которые тоже не работали), но я думаю, что они для рисования.
Для простоты я покажу только код, который выполняет изменение размера и запись, и я будуукажите результирующие размеры для полученного изображения.
final BufferedImage imageOriginal = ImageIO.read(new File("/some-path/arch3.jpg"));
int newWidth = 267, newHeight = 400;
BufferedImage imageResized = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = (Graphics2D) imageResized.getGraphics();
g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
g2d.drawImage(imageOriginal, 0, 0, imageResized.getWidth(), imageResized.getHeight(), 0, 0, imageOriginal.getWidth(), imageOriginal.getHeight(), null);
try {
ImageIO.write(imageResized, "jpg", new File("/some-path/arch3_converted.jpg"));
} catch (Exception ioException) {
System.out.println(ioException.toString());
}
Это исходное изображение: https://drive.google.com/open?id=1qsZFQWWneBlHAahV2s5CwlxlCYvnHiU8 (4480 × 6720). Это преобразованный результат: https://drive.google.com/open?id=1WEcYb7QRlurOK-_dHr_BAk1HrLxPkdIl (267x400).Вы можете видеть в результате (особенно в строках), что это не так.