Java 如何将用户选择的图像保存到“我的桌面”中的文件夹中
我想知道如何保存用户以前选择的图像。我只知道如何允许用户选择图像 这是我目前的代码Java 如何将用户选择的图像保存到“我的桌面”中的文件夹中,java,image,swing,jfilechooser,filechooser,Java,Image,Swing,Jfilechooser,Filechooser,我想知道如何保存用户以前选择的图像。我只知道如何允许用户选择图像 这是我目前的代码 private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { JFileChooser chooser = new JFileChooser(); chooser.showOpenDialog(null); File f = chooser.getSelectedFile();
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
JFileChooser chooser = new JFileChooser();
chooser.showOpenDialog(null);
File f = chooser.getSelectedFile();
// String filename = f.getAbsolutePath();
//jTextField1.setText(filename);
try {
ImageIcon ii=new ImageIcon(scaleImage(120, 120, ImageIO.read(new File(f.getAbsolutePath()))));//get the image from file chooser and scale it to match JLabel size
jLabel3.setIcon(ii);
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static BufferedImage scaleImage(int w, int h, BufferedImage img) throws Exception {
BufferedImage bi;
bi = new BufferedImage(w, h, BufferedImage.TRANSLUCENT);
Graphics2D g2d = (Graphics2D) bi.createGraphics();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY));
g2d.drawImage(img, 0, 0, w, h, null);
g2d.dispose();
return bi;
}
请尝试以下代码:
BufferedImage img = ...;
String location = ...;
String format = ...; // "PNG" for example
ImageIO.write(img, format, new File(location));
请参阅:最好使用图像文件的原始字节。使用
ImageIO
通常会更改图像的(文件)大小,如果使用JPEG,则可能会以不同的压缩/质量级别保存图像。使用流来完成此任务是否会使其复杂化?定义“很多”。。顺便说一句,你有没有尝试过改变JPEG的压缩?这不是火箭科学,但离它不远。查看上的getJpegCompressedImage(BufferedImage图像)
方法。请注意,ImageIO
中没有办法知道原始图像中使用了什么压缩/质量…“这不是火箭科学”——是的,没错。我要做一个有根据的猜测,OP不想和图像压缩有任何关系!