目录中图像的大小

目录中图像的大小

此代码尝试调整名为“ 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()));
    }
}




要重现该问题,您可以download the Maven project

最佳答案

您可以将res更改为接受File对象而不是字符串吗?然后,您可以编写以下内容,这要好得多:

for (File sourceImageFile : new File("imgs").listFiles()) {
    res(sourceImageFile);
}


关于您的原始问题,请尝试添加一些跟踪语句或使用调试器来查找到底传递给res的内容。

关于java - 如何调整目录中图像的大小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9779563/

10-10 05:51