图像保存到java中的文件夹

时间:2013-11-23 16:45:51

标签: java bufferedimage

我正在使用java。在我的应用程序中,我想为用户提供添加和更改图像的功能。我使用打开的对话框来选择图像,它会正常工作,即在按钮点击打开对话框打开时选择任何图像。

我想将选定的图像存储到指定的文件夹中(src / resources /以及存储在数据库中的路径,以便进行更新。

请指导我克服这个问题。

实际代码:

private void btnImagenActionPerformed(java.awt.event.ActionEvent evt) {                                          
    int returnVal = ElegirImagen.showOpenDialog(this);

    if (returnVal == JFileChooser.APPROVE_OPTION) {
        File file = ElegirImagen.getSelectedFile();
        String nombre=ElegirImagen.getSelectedFile().getName();
        String sname = file.getAbsolutePath();
       BufferedImage myPicture=null;
        try {
            myPicture = ImageIO.read(new File(sname));
        } catch (IOException ex) {
            Logger.getLogger(Videoteca.class.getName()).log(Level.SEVERE, null, ex);
        }
        lblImg.setIcon(new ImageIcon(myPicture));
        lblImg.repaint();

        BufferedImage i = new BufferedImage(300,500,BufferedImage.TYPE_INT_ARGB);
        File fichero = new File(sname);
    String formato = "jpg";
        try {
            ImageIO.write(i, formato, fichero);
        } catch (IOException ex) {
            Logger.getLogger(Videoteca.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
}  

1 个答案:

答案 0 :(得分:0)

  1. Swing具有单线程模型。所有生成的Events也由称为EventQueue的单个队列中的一个名为EDT(Event Dispatch Thread)的单个队列处理。动作事件也不例外。你不应该在这个线程中读写文件。而是使用Anonymous类或扩展Runnable创建一个新线程,并在那里部署您的图像读写操作。

  2. 虽然不清楚你在问什么,但我认为你可能是在写完一张图片之后。 ImageIO也有write函数来编写图像文件。查看包含足够说明的Writing/Saving an Image教程。