2017-03-08 113 views
0

我的Java初學者嘗試將.PNG 8356 X 5092像素加載到一個JFrame 720×600加載緩衝圖像到一個JLabel在JScrollPane中

我可以加載圖像,但它放大到左上角,希望使.PNG適合JFrame,然後用鼠標點擊並用鼠標滾動進行縮放。

我一直在尋找約2周的答案,但無濟於事。 只是想一個好推到正確的方向...

乾杯

編輯

好吧,我得到了圖像加載和規模大小通過做:

public Image ScaledImage(Image img, int w, int h) { 
    BufferedImage resizedImg = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); 
    Graphics2D g2 = resizedImg.createGraphics(); 
    g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); 
    g2.drawImage(img, 0, 0, w, h, null); 
    g2.dispose(); 

    return resizedImg; 

} 

並將其傳遞給JLabel,例如:

BufferedImage Map = ImageIO.read(new File(.PNG-LOCATION)); 
    ImageIcon icon = new ImageIcon(ScaledImage(Map, 720, 600)); 
      JLabel Label = new JLabel(); 
      Label.setIcon(icon); 

現在只是需要幫助或縮放指導下,單擊拖動

感謝您的幫助

+0

您是否嘗試過調整的PNG? – betontalpfa

+0

不,我沒有,因爲我不知道從哪裏開始 – DrenReaver

+0

你可以先查找「resize bufferedimage java」,這可能會或可能不會導致你回答這個問題:http://stackoverflow.com/questions/9417356/bufferedimage -resize – domsson

回答

0

下面是調整的例子:

static BufferedImage createResizedCopy(Image originalImage, 
      int scaledWidth, int scaledHeight, 
      boolean preserveAlpha) 
    { 
     System.out.println("resizing..."); 
     int imageType = preserveAlpha ? BufferedImage.TYPE_INT_RGB : BufferedImage.TYPE_INT_ARGB; 
     BufferedImage scaledBI = new BufferedImage(scaledWidth, scaledHeight, imageType); 
     Graphics2D g = scaledBI.createGraphics(); 
     if (preserveAlpha) { 
      g.setComposite(AlphaComposite.Src); 
     } 
     g.drawImage(originalImage, 0, 0, scaledWidth, scaledHeight, null); 
     g.dispose(); 
     return scaledBI; 
    } 

使用上面的代碼爲: img2 = createResizedCopy(img, 720 , 600, true);img是你的原始圖像和img2是調整大小的。

要加載img使用:img = ImageIO.read(new File("yourImagepath"));

顯示它在框架:

img2 = createResizedCopy(img, 720 , 600, true); 
ImageIcon icon=new ImageIcon(img2); 
JFrame frame=new JFrame(); 
frame.setLayout(new FlowLayout()); 
frame.setSize(720,600); 
JLabel lbl=new JLabel(); 
lbl.setIcon(icon); 
frame.add(lbl); 
frame.setVisible(true); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

更多細節可以在這裏找到: resizing image in java