このコードは、「imgs」というディレクトリ内の画像のサイズを変更しようとします。残念ながら、何らかの理由でlistFiles(..)ループのコメントを解除すると、ImageIO.read(sourceImageFile)
nullが返されます。ただし、同じファイルをループの外ですぐに処理する(res("imgs/foto_3.jpg")
)は機能します。したがって、明らかに、このループはファイルの読み取りを妨げています。ソリューション?
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import static org.imgscalr.Scalr.*;
public class App {
public static void main(String[] args) throws IOException {
// for (File sourceImageFile : new File("imgs").listFiles()) {
// res("imgs/"+sourceImageFile.getName());
// }
res("imgs/foto_3.jpg");
}
public static void res(String arg) throws IOException {
File sourceImageFile = new File(arg);
BufferedImage img = ImageIO.read(sourceImageFile);
BufferedImage thumbnail = resize(img, 500);
thumbnail.createGraphics().drawImage(thumbnail, 0, 0, null);
ImageIO.write(thumbnail, "jpg", new File("resized/" + sourceImageFile.getName()));
}
}
問題を再現するには、Mavenプロジェクトをダウンロードできます。