存储时如何存储图像并同时重命名该图像?

时间:2014-07-18 19:45:13

标签: java image swing file jfilechooser

想要创建JFileChooserJTextField然后从任意文件夹中浏览图片。给出路径,因此它将重命名图像,图像名称将是jtextfield.getText();,然后存储在指定的路径中。 我知道这很难实现。我做了一些事。

JFileChooserjtextfield已创建。图像存储在我指定的路径中。但它不是重命名图像。 (重命名图像应该是jtextfield.jpg)

import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.io.File;

public class ImgClass {

    public ImgClass() {
        final JFrame frame = new JFrame("Save Image");

                    final JTextField username = new JTextField();
            username.setBounds(105, 102, 192, 20);
            frame.add(username);
            username.setColumns(10);

        JButton saveImage = new JButton("Browse");
        saveImage.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                JFileChooser chooser = new JFileChooser();
                FileNameExtensionFilter filter = new FileNameExtensionFilter(
                        "JPG, GIF, and PNG Images", "jpg", "gif", "png");
                chooser.setFileFilter(filter);
                int returnVal = chooser.showOpenDialog(frame);
                if (returnVal == JFileChooser.APPROVE_OPTION) {
                    File file = chooser.getSelectedFile();
                    System.out.println("You choose to open this file: "
                            + file.getName());
                    BufferedImage image;
                    try {
                        image = ImageIO.read(file);
                       ImageIO.write(image, "jpg",new File("D:\\Img\\" + username.getText()+".jpg"));
                    } catch (IOException ex) {
                        Logger.getLogger(ImgClass.class.getName()).log(Level.SEVERE, null, ex);
                    }              
                }
            }
        });



        frame.add(saveImage);
        frame.setLayout(new GridBagLayout());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);


    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                ImgClass saveImageFile = new ImgClass();
            }
        });
    }
}

1 个答案:

答案 0 :(得分:3)

您在编写文件时使用相同的文件名。考虑从JTextField获取文本并使用它。

String newName = username.getText();

// no not this!
// File newFile = new File("D:\\Img\\" + file.getName()));

// but this!
file newFile = new File("D:\\Img\\" + newName));
// write with newFile

修改
您在评论中说明:

  

好方法。但问题是:如果我写'' ABC'在jtextfield然后图像将文件格式存储错误。如果我在jtextfield中写abc.jpg那就可以了。如有任何修改,请建议我。

我要求您编写一小段代码,检查字符串(上面名为newName)以查看它是否以".jpg"或类似".JPG"之类的内容结尾如果没有,那么为String提供这样的结尾。我有信心你可以解决这个问题。 ;)