我没有看到将图像存储到项目jar中的要点。将它保存到系统中会更有意义。但是再一次,为什么要这样做呢?
只需将图像直接存储到数据库。要做到这一点只是这样做
PreparedStatement ps=con.prepareStatement("insert into imgtable values(?)");
FileInputStream fin=new FileInputStream(fileFromChooser);
ps.setBinaryStream(1,fin,fin.available());
int i=ps.executeUpdate();
System.out.println(i+" records affected");
UPDATE
保存到文件系统。你需要在这行代码
ImageIO.write(image, "jpg",new File("C:\\path\\to\\destination\\" + file.getName()));
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.filechooser.FileNameExtensionFilter;
public class SaveImageFile {
public SaveImageFile() {
final JFrame frame = new JFrame("Save Image");
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 chose to open this file: "
+ file.getName());
BufferedImage image;
try {
image = ImageIO.read(file);
ImageIO.write(image, "jpg",new File("C:\\path\\to\\destination\\" + file.getName()));
} catch (IOException ex) {
Logger.getLogger(SaveImageFile.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() {
SaveImageFile saveImageFile = new SaveImageFile();
}
});
}
}
指定路径为何保存到文件夹呢?为什么不直接到数据库? –