Я пытаюсь отобразить изображение, которое больше, чем размеры JFrame. Если я попытаюсь изменить размер изображения меньше, качество изображения будет потеряно.
Если я увеличу изображение, качество не будет потеряно. Это нормальное поведение в пакете изображений Java?
Я думаю, что я пытаюсь понять, что, вероятно, я делаю что-то не так при уменьшении размера изображения. Так есть ли в Java метод, позволяющий автоматически делать это без потери качества изображения?
То же поведение, что и у JButton, где Java автоматически корректирует пространство, занимаемое JButton в JPanel.
bufferedImage = resize(bufImage,500,600);
ImageIcon imageIcon = new ImageIcon(bufferedImage);
resizedIMage = imageIcon.getImage();
Фактический размер ниже. Я взял это из интернета.
private static BufferedImage resize(BufferedImage image, int width, int height) {
int type = image.getType() == 0? BufferedImage.TYPE_INT_ARGB : image.getType();
BufferedImage resizedImage = new BufferedImage(width, height, type);
Graphics2D g = resizedImage.createGraphics();
g.setComposite(AlphaComposite.Src);
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.setRenderingHint(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g.drawImage(image, 0, 0, width, height, null);
g.dispose();
return resizedImage;
}