我是Java初学者尝试将.PNG
8356 x 5092像素加载到JFrame 720 x 600中。
我可以加载图片,但它会缩放到左上角,想要使.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 :(得分: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