使用Java将多张图像转换为灰度图像

问题描述 投票:0回答:1

我的程序正在读取所有文件,但将最后一个文件转换为黑白,并将文件夹中的所有当前图像更改为该转换后的图像。我该怎么办?

//read-image
    try{
      f=new File("path");
      File[] files=f.listFiles();
      for (File file:files){
          ImageInputStream is = ImageIO.createImageInputStream(file);
          img= ImageIO.read(is);
        }
      System.out.println("Reading Complete.");
    }
      catch(IOException e){
        System.out.println("Error"+e);
      }

            //write-image
      try{
        f= new File("path");
        File[] files=f.listFiles();
      for (File file:files){
        ImageOutputStream os = ImageIO.createImageOutputStream(file);
        ImageIO.write(img,"jpeg",os);
        System.out.println("Writing Complete");
        os.flush();
        os.close();
    }
      }
      catch(IOException e){
        System.out.println("Error"+e);
      }
java image readfile grayscale writefile
1个回答
0
投票

您的代码读取所有文件,但仅保留一个img对象(最后一个)。您可以通过合并两个部分来解决此问题-读取,编辑和编写:

try {
    f = new File("path");
    File[] files = f.listFiles();
    for (File file : files){
        Image img;
        try (ImageInputStream is = ImageIO.createImageInputStream(file)) {
            img = ImageIO.read(is);
        }
        Image imgGrayscale = makeImageGrayscale(img);
        try (ImageOutputStream os = ImageIO.createImageOutputStream(file)) {
            ImageIO.write(img, "jpeg", os);
        }
    }
} catch(IOException e){
    System.out.println("Error"+e);
}
© www.soinside.com 2019 - 2024. All rights reserved.