Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将用户选择的图像保存到“我的桌面”中的文件夹中_Java_Image_Swing_Jfilechooser_Filechooser - Fatal编程技术网

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不想和图像压缩有任何关系!