有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java缩放文件夹中的图像

我正在尝试使用文件选择器调整图片大小。似乎所有的东西都是文件,但在添加到文件夹后我无法打开它

public void metodAddpath(String fullPath)  {

try {
                       File sourceFile = new File(fullPath);               
                     BufferedImage bufferedimage = ImageIO.read(sourceFile);
                     ByteArrayOutputStream os = new ByteArrayOutputStream();
                     ImageIO.write(bufferedimage, "jpg", os);
                      InputStream is = new ByteArrayInputStream(os.toByteArray());
        FileOutputStream fileOutputStream = new FileOutputStream(
                        sourceFile);

        int bufferSize;
        byte[] bufffer = new byte[512];

        while ((bufferSize = is.read(bufffer)) > 0) {
            fileOutputStream.write(bufffer, 0, bufferSize);
        }
        is.close();
        fileOutputStream.close();             

                    //scaleImage(bufferedimage, 220, 220);  

} catch(Exception e) {
    e.printStackTrace();
}

} 之后我按下按钮将图像保存到文件夹中

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

    Database base = new  Database();
   metodAddpath(jTextField1.getText());

    base.addPictureResource(jTextField1.getText());
}

但当我试图将其添加到文件夹中时,出现了一个错误


共 (1) 个答案

  1. # 1 楼答案

    最后,我找到了在保存到文件夹之前缩放图像的方法。首先,我想为按钮添加一个侦听器,并使用文件选择器获取图像

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
       JFileChooser file = new JFileChooser();
                file.setCurrentDirectory(new File(System.getProperty("user.home")));
    
                FileNameExtensionFilter filter = new FileNameExtensionFilter("*.Images", "jpeg", "jpg", "png"); 
                file.addChoosableFileFilter(filter);
                int result = file.showSaveDialog(null);
                if(result ==JFileChooser.APPROVE_OPTION) {
                    File selectedFile = file.getSelectedFile();
                    //GET ABSOLUTE PATH OF PICTURES
                    jTextField1.setText(selectedFile.getAbsolutePath());
                    //addPicture.setText(selectedFile.getName()); 
                    //GET NAME OF PICTURES
                    //getPicName = selectedFile.getName();
    
    
                } else if(result == JFileChooser.CANCEL_OPTION) {
                    System.out.println("File not found!");
    
                }
    }
    

    在我为另一个按钮添加侦听器之后,该按钮负责将图片添加到文件夹中。这是我的代码:

      private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            try{
       addPicture(jTextField1.getText());
              }catch(Exception e) {
        e.printStackTrace();
    }
    
        } 
    

    最后,让我们添加两个函数:

        public void addPicture(String fullPath) throws IOException {
         File sourceFile = new File(fullPath);               
    try {
        BufferedImage bufferedimage = ImageIO.read(sourceFile);
    // add method scaleImage(bufferedimage, 220, 220) in ImageIO.write(scaleImage(bufferedimage, 220, 220), "jpg", fileOutputStream)  
        try (FileOutputStream fileOutputStream = new FileOutputStream("/my files/NetBeans IDE 8.2/NewDataBase/src/newdatabase/images/" + sourceFile.getName())) {
            ImageIO.write(scaleImage(bufferedimage, 220, 220), "jpg", fileOutputStream);
        }
    
    } catch(Exception e) {
        e.printStackTrace();
    }
    

    别忘了重要的方法

    public BufferedImage scaleImage(BufferedImage img, int width, int height) {
    int imgWidth = img.getWidth();
    int imgHeight = img.getHeight();
    if (imgWidth*height < imgHeight*width) {
        width = imgWidth*height/imgHeight;
    } else {
        height = imgHeight*width/imgWidth;
    }
    
    BufferedImage newImage = new BufferedImage(width, height,
            BufferedImage.TYPE_INT_RGB);
    Graphics2D g = newImage.createGraphics();
    try {
        g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
                RenderingHints.VALUE_INTERPOLATION_BICUBIC);
    
        g.clearRect(0, 0, width, height);
        g.drawImage(img, 0, 0, width, height, null);
    } 
    
    finally {
        g.dispose();
    }
    return newImage;
    }  
    
    
    
    
    }
    

    谢谢大家的帮助。我想对Mad程序员说声谢谢。你真是个天才