首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用JFileChooser用Java保存png图像

用JFileChooser用Java保存png图像
EN

Stack Overflow用户
提问于 2013-11-22 02:37:57
回答 3查看 7.5K关注 0票数 1

我正在尝试保存由BufferedImage形成的图像。我通过执行以下操作来获得BufferedImage

代码语言:javascript
复制
(BufferedImage) fg;

fg是我的jPanel图形的图像。我成功地保存了图像,直接将路径硬编码为以下内容:

代码语言:javascript
复制
ImageIO.write((BufferedImage)fg,"png",new File("C:\\Users\\Geiger\\Documents\\test.png"));

但是,当我尝试将JFileChooser添加到mix中时,保存的图像显示为空白,除了jPanel的背景色之外什么都没有。

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

代码语言:javascript
复制
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有一个鼠标按下事件时,我更新我的图像:

代码语言:javascript
复制
fg = jPanel2.createImage(jPanel2.getWidth(), jPanel2.getHeight());
EN

回答 3

Stack Overflow用户

发布于 2013-11-22 04:50:17

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

代码语言:javascript
复制
ImageIO.write(buffer, "png", fileDialog.getSelectedFile());

希望这能有所帮助

票数 2
EN

Stack Overflow用户

发布于 2016-12-09 15:28:49

代码语言:javascript
复制
Graphics2D graphics2D = image.createGraphics();
scribblePane.paint(graphics2D);

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

票数 0
EN

Stack Overflow用户

发布于 2019-04-18 09:01:47

这对我来说很有效

代码语言:javascript
复制
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!");
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20129279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档