我正在尝试将调整大小的图片保存到用户桌面,但不确定如何执行此操作。
这是我到目前为止的代码:
mi.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String userhome = System.getProperty("user.home");
fileChooser = new JFileChooser(userhome + "\\Desktop");
fileChooser.setAutoscrolls(true);
switch (fileChooser.showOpenDialog(f)) {
case JFileChooser.APPROVE_OPTION:
BufferedImage img = null;
try {
img = ImageIO.read(fileChooser.getSelectedFile());
} catch (IOException e1) {
e1.printStackTrace();
}
Image dimg = img.getScaledInstance(f.getWidth(),
f.getHeight(), Image.SCALE_SMOOTH);
path = new ImageIcon(dimg);
configProps.setProperty("Path", fileChooser
.getSelectedFile().getPath());
imBg.setIcon(path);
break;
}
}
});
上面的代码调整所选图像的大小以适合 JFrame
的大小,然后将其设置为 JLabel
。
这一切都运行良好,但我也想将文件输出到设定位置(例如用户桌面)以使其更容易。我目前正在查看输出流,但无法完全理解它。
任何帮助都会很棒。
最佳答案
获取当前Icon
来自JLabel
...
Icon icon = imgBg.getIcon();
将图标绘制为 BufferedImage
...
BufferedImage img = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = img.createGraphics();
icon.paintIcon(null, g2d, 0, 0);
g2d.dispose();
将图像保存到文件...
ImageIO.write(img, "png", new File("ResizedIcon.png"));
(是的,您可以使用 JFileChooser
来选择文件位置/名称)
您还应该看看this对于缩放图像的更好示例,您可以通过这种方式缩放 BufferedImage
到另一个BufferedImage
并省去重新粉刷 Icon
的麻烦
您可能还想看看Writing/Saving an Image
关于java - 如何将图像保存到指定位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29813906/