此代码尝试调整名为“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 项目。