2012-07-19 107 views
4

我有一些.jpg顯示在面板中。不幸的是,它們都是大約1500x1125像素,這對我所要做的事來說太大了。是否有程序化的方式來改變這些.jpg的分辨率?我可以更改Java中jpg圖像的分辨率嗎?

+4

看看這個http://www.mkyong.com/java/how-to-resize-an-image-in-java/ – toniedzwiedz 2012-07-19 14:46:15

+0

@湯姆,完美的工作,非常感謝你!讓它成爲答案,你已經得到了一個複選標記。 – Quintis555 2012-07-19 14:56:08

回答

2

加載它作爲一個ImageIcon,這會做的伎倆:

import java.awt.Graphics2D; 
import java.awt.image.BufferedImage; 
import javax.swing.ImageIcon; 

public static ImageIcon resizeImageIcon(ImageIcon imageIcon , Integer width , Integer height) 
{ 
    BufferedImage bufferedImage = new BufferedImage(width , height , BufferedImage.TRANSLUCENT); 

    Graphics2D graphics2D = bufferedImage.createGraphics(); 
    graphics2D.drawImage(imageIcon.getImage() , 0 , 0 , width , height , null); 
    graphics2D.dispose(); 

    return new ImageIcon(bufferedImage , imageIcon.getDescription()); 
} 
+0

哦,我要去檢查湯姆作爲答案,但我已經使用ImageIcon,所以這可能是更多我需要的。等待未來的更新! – Quintis555 2012-07-19 15:08:53

+0

我得到一個「錯誤:無法找到符號」在這一行 BufferedImage bufferedImage = new BufferedImage(width,height,BufferedImage.TRANSLUCENT); 它指向構建輸出窗口中的BufferedImage部分。 – Quintis555 2012-07-19 15:15:49

+0

我不確定,它編譯得很好。你在用什麼IDE? – 2012-07-19 15:21:12

1

你可以試試:

private BufferedImage getScaledImage(Image srcImg, int w, int h) { 
    BufferedImage resizedImg = new BufferedImage(w, h, Transparency.TRANSLUCENT); 
    Graphics2D g2 = resizedImg.createGraphics(); 
    g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); 
    g2.drawImage(srcImg, 0, 0, w, h, null); 
    g2.dispose(); 
    return resizedImg; 
}