2017-03-08 44 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