2017-03-08 3 views
0

Ich bin Java Anfänger ein .PNG 8356 x 5092 Pixel in einem JFrame 720 x 600Laden Buffered Bild JLabel in JScrollPane

ich das Bild geladen werden kann, aber es wird gezoomt nach links oben zu laden versuchen, wollen um die .PNG in den JFrame zu passen und dann in der Lage zu sein, mit dem Mausklick zu überspannen und mit der Maus zu scrollen.

Ich habe seit etwa 2 Wochen nach Antworten gesucht, aber ohne Erfolg. einfach einen guten Schub in die richtige Richtung zu wollen ...

Prost

EDIT

Ok ich das Bild bekam zu laden und Maßstab zu Größe, indem Sie:

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; 

} 

und übergibt es an die JLabel wie:

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

Jetzt müssen nur helfen oder Führung in Zoomen klicken

Danke für die Hilfe

+0

Haben Sie versucht, die PNG-Größe ändern? – betontalpfa

+0

Nein ich habe nicht, da ich keine Ahnung habe, wo ich anfangen soll – DrenReaver

+0

Du könntest anfangen, indem du nach "resize bufferedimage java" suchst, was dich vielleicht zu dieser Antwort führen könnte: http://stackoverflow.com/questions/9417356/bufferedimage -resize – domsson

Antwort

0

Hier ziehen ist ein Beispiel für die Größenänderung:

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; 
    } 

Benutzen Sie den Code oben: img2 = createResizedCopy(img, 720 , 600, true); Wo img ist Ihr Originalbild und img2 ist die Größe geändert.

img Gebrauch zu laden: img = ImageIO.read(new File("yourImagepath"));

es in Rahmen zu zeigen:

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); 

Weitere Details finden Sie hier: resizing image in java