使用java中的getScaledInstance()缩放图像

时间:2012-07-25 15:32:21

标签: java image get

任何人都可以解释这一点,我有3种创建Image对象的方法,但只有最后一个对象(k)可以使用getscalledinstance()成功缩放。

public class scalingTest extends JPanel {

    public static Image i;
    public static Image j;
    public static Image k;
    scalingTest() throws IOException
    {
        i = Toolkit.getDefaultToolkit().getImage("C:/Users/Prashant/Desktop/2.png");
        j = new ImageIcon("C:/Users/Prashant/Desktop/2.png").getImage();
        k = ImageIO.read(new File("C:/Users/Prashant/Desktop/2.png"));
    }
    public static void main(String s[]) throws IOException
    {
        JFrame jf = new JFrame("Scaling TEST");
        jf.add(new scalingTest());
        jf.setSize(500, 500);
        jf.setVisible(true);
    }
    @Override
    public void paintComponent(Graphics g)
    {
        g.drawImage(i.getScaledInstance(100, 100, Image.SCALE_DEFAULT), 0, 0, this);
        g.drawImage(j.getScaledInstance(100, 100, Image.SCALE_DEFAULT), 100, 100, this);
        g.drawImage(k.getScaledInstance(100, 100, Image.SCALE_DEFAULT), 200, 200, this);
    }
}

1 个答案:

答案 0 :(得分:0)

阅读Image.getScaledInstance的Javadoc:

  

将返回一个将呈现的新Image对象        指定width和的图像        默认情况下为height。新的Image对象        即使原始源图像也可以异步加载        已经完全加载了。

当您尝试绘制图像时,确保缩放图像确实那里(如果您需要建议如何操作,请查找“确保图像已满载”)。它与ImageIO获得的图像一起使用的原因是ImageIO为您提供了BufferedImage,并且总是加载它。

另请注意:为了简单地将图像绘制为图像大小以外的大小,您不需要创建缩放实例 - 图形具有在运行中以不同大小绘制图像的方法。根据用例,您可能最好使用它。