2013-07-17 65 views
0

這就是我試圖使用getScaledInstance()縮放圖像。但它不縮放圖像。任何人都可以糾正這個代碼?如何使用getScaledImage縮放圖像?

BufferedImage image = ImageIO.read(new File("img.jpg")); 
JLabel picLabel = new JLabel(new ImageIcon(image)); 
image=(BufferedImage)image.getScaledInstance(50,50, Image. SCALE_SMOOTH); 
add(picLabel); 
+3

http://stackoverflow.com/questions/7252983/resizing-image-java-getscaledinstance的可能的複製 – kiheru

回答

1

我做了這個,現在它的工作正常。 :)

BufferedImage image = ImageIO.read(new File("img.jpg")); 
    BufferedImage img = new BufferedImage(200,150,BufferedImage.TYPE_INT_RGB); 
    img.getGraphics().drawImage(image,0,0,200,150,null); 

    JLabel label = new JLabel(new ImageIcon(img)); 
    add(label); 
+0

您的原始代碼的問題是,它甚至不執行,因爲您不能將縮放圖像投射到BufferedImage。我更新了我原來的答案。 – camickr

4

創建新圖像不會更新ImageIcon。更改您的代碼的順序:

//BufferedImage image = ImageIO.read(new File("img.jpg")); 
//JLabel picLabel = new JLabel(new ImageIcon(image)); 
Image image = ImageIO.read(new File("img.jpg")); 
image=image.getScaledInstance(50,50, Image. SCALE_SMOOTH); 
JLabel picLabel = new JLabel(new ImageIcon(image)); 
add(picLabel); 

編輯:您發佈的原始代碼甚至沒有執行。您不能將縮放的圖像投射到BufferedImage。我更新了代碼來解決執行問題。

+0

我以前做過這個,但它不工作。 – Ani

+0

發佈您的[SSCCE](http://sscce.org/)來證明問題。 – camickr

+0

是的,編輯工作很好,謝謝你。 :) – Ani