【发布时间】:2012-12-04 05:28:17
【问题描述】:
我正在使用jhead检查图像是否设置了方向标志,如果是,则旋转它并设置exif信息以表明它在查看时不需要旋转。在命令行上它看起来像:
jhead -autorot 'IMG_3680.JPG'
我正在尝试使用ProcessBuilder 从我的Java 应用程序中调用我正在查看的图像,但它使用jpegtran 来执行实际的图像旋转。这两个应用程序都可以从命令行正常运行,并且位于我的 Mac 上的 /opt/local/bin。
我不断得到:
sh: jpegtran: command not found
Error : Problem executing specified command
in file '/images/IMG_3681.JPG'
我的代码是:
public static void main(String[] args) throws Exception {
File[] files = (new File("/images")).listFiles();
for (File file : files){
ProcessBuilder pb = new ProcessBuilder("jhead", "-autorot", file.getAbsolutePath());
pb.redirectOutput(Redirect.INHERIT);
pb.redirectError(Redirect.INHERIT);
Process p = pb.start();
}
}
我是否需要向ProcessBuilder 提供提示,以便jhead 能够呼叫jpegtran?
【问题讨论】:
-
jhead -autorot 'IMG_3680.JPG' :这在您的命令行中可以正常工作吗?
-
您尝试将完整命令传递给进程构建器的路径?
/opt/local/bin/jhead -
@sheldonCooper 是的,在命令行上可以工作
-
@MadProgrammer 传递完整的命令会产生相同的结果。
-
试一试 - 你可以使用 System.Runtime 来执行命令吗?
标签: java macos processbuilder