java - 如何将图像保存到指定位置?

标签 java image swing save outputstream

我正在尝试将调整大小的图片保存到用户桌面,但不确定如何执行此操作。

这是我到目前为止的代码:

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/

相关文章:

css - 将文本 float 到图形和图形标题的右侧

java - 如何在不耗尽内存的情况下持续更新JTable?

java - Swing 组件监听自身与内部类

java - Java内部类

java - Apache POI 库 : How to read Excel sheet embedded in Word document

java - 从接口(interface)调用属性与静态类调用属性有什么区别

javascript - 仅当图像更改时从目录重新加载图像

image - 在 Octave 中显示图像的像素值?

java - 我如何从 R 中提取 RandomForest 用于生产?

java - 是否可以使用 JFileChooser 限制特定目录可用的文件?