Swing中图像的平滑缩放

时间:2016-05-21 00:21:33

标签: java image swing

我创建了一个方法来调整项目资源包中的图像大小,该包保存了我使用的图像和图标。但是,它似乎无法渲染或平滑调整大小。

public Image getResourceImage(String filepath){
        Image img = new ImageIcon(getClass().getClassLoader().getResource(filepath)).getImage();
        return img;
        /* Example usage: 
            Image loginBg = new ImageMethod().getAssetImage("foldername/filename.extension");
        */
    }

以下是原始png图像。

enter image description here enter image description here

以下是我用于登录面板的已调整大小的版本。

enter image description here

看起来像素化了。考虑到原始图标尺寸为512x512

,有没有办法实现像这样清晰和平滑的东西

enter image description here

图标均为PNG格式。

我使用Java中的图像知识有限,所以我很感激任何帮助或建议。

感谢。

我终于解决了它。创建了我的方法的3个版本。

public Image getResourceImage(String filepath){
        Image img = new ImageIcon(getClass().getClassLoader().getResource(filepath)).getImage();
        return img;
        /* Example usage: 
            Image loginBg = new ImageMethod().getAssetImage("foldername/filename.extension");
        */
    }

    public ImageIcon getResourceImage(String filepath, JLabel label){
        Image rawImage = new ImageIcon(getClass().getClassLoader().getResource(filepath)).getImage();
        Image renderedImage = rawImage.getScaledInstance(label.getWidth(), label.getHeight(), Image.SCALE_SMOOTH);
        ImageIcon image = new ImageIcon(renderedImage);
        return image;

    }

    public Image getResourceImage(String filepath, JPanel panel){
        Image rawImage = new ImageIcon(getClass().getClassLoader().getResource(filepath)).getImage();
        Image renderedImage = rawImage.getScaledInstance(panel.getWidth(), panel.getHeight(), Image.SCALE_SMOOTH);
        return renderedImage;

    }

这肯定会帮助其他人。感谢Obicere的建议。

0 个答案:

没有答案