【问题标题】:Saving png image with Java using JFileChooser使用 JFileChooser 使用 Java 保存 png 图像
【发布时间】:2013-11-21 18:37:57
【问题描述】:

我正在尝试保存由 BufferedImage 形成的图像。我通过

获得了 BufferedImage
(BufferedImage) fg;

fg 是我的 jPanel 图形的图像。我成功地通过直接硬编码路径来保存图像,如下所示:

ImageIO.write((BufferedImage)fg,"png",new File("C:\\Users\\Geiger\\Documents\\test.png"));

但是当我尝试将 JFileChooser 添加到混合中时,保存的图像显示为空白,只有 jPanel 的背景颜色。

我尝试使用 JFileChooser 的代码如下:

JFileChooser jfc = new JFileChooser();
int retVal = jfc.showSaveDialog(null);
if(retVal==JFileChooser.APPROVE_OPTION){
    File f = jfc.getSelectedFile();
    String test = f.getAbsolutePath();
    ImageIO.write((BufferedImage)fg,"png",new File(test));
 }

编辑:为了进一步澄清这个问题: 问题不在于文件没有出现,而是在使用 JFileChooser 对象时图形没有出现在图像上。

当 JFrame 有鼠标按下事件时,我会更新我的图像:

fg = jPanel2.createImage(jPanel2.getWidth(), jPanel2.getHeight());

【问题讨论】:

  • 确保您写入的文件引用实际上是文件而不是目录
  • 为什么不只是ImageIO.write((BufferedImage) fg, "png", jfc.getSelectedFile())?无需创建指向同一路径的新文件对象。但是,问题很可能不在于您发布的代码,而在于您更新fg 图像的方式。
  • @haraldk - 我已经尝试过了,但是文件仍然是空白的,jPanel 的背景是灰色的。
  • 没想到它解决了任何问题,只是把代码做得更好。正如我所说,问题很可能不在于您发布的代码,而在于您更新图像的方式。尝试发布这部分代码,或者更好的是,创建一个 SSCCE,也许我们可以提供帮助。

标签: java image swing file-io javax.imageio


【解决方案1】:

试着把这行代码我认为是你需要的:

ImageIO.write(buffer, "png", fileDialog.getSelectedFile());

希望有帮助

【讨论】:

    【解决方案2】:
    Graphics2D graphics2D = image.createGraphics();
    scribblePane.paint(graphics2D);
    

    使用这两行代码添加图形。

    【讨论】:

      【解决方案3】:

      这对我有用

      JFileChooser fileChooser = new JFileChooser();
          fileChooser.setFileFilter(new FileNameExtensionFilter("*.png", "png"));
          if (fileChooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
              File file = fileChooser.getSelectedFile();
              try {
                  ImageIO.write((BufferedImage) image, "png", new File(file.getAbsolutePath()));
              } catch (IOException ex) {
                  System.out.println("Failed to save image!");
              }
          } else {
              System.out.println("No file choosen!");
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-27
        • 2019-03-01
        • 1970-01-01
        • 2012-05-09
        • 2011-08-26
        • 2017-03-01
        • 1970-01-01
        相关资源
        最近更新 更多