【发布时间】:2014-12-16 18:56:01
【问题描述】:
M 的主要目标是接收一系列 .eps 文件并使用 ImageMagick 和 GhostScript 将它们转换为 .jpg。我在 Windows 环境中安装了 ImageMagick 和 GhostScript。我在 java 中使用 Process 引用 ImageMagick 的转换命令,但没有运气。使用 Window 的 cmd 工具,我通过导航到 C:\Program Files\ImageMagick-6.8.9-Q16 并使用以下命令成功地将 EPS 转换为 JPEG:
convert Raw\R_GiftcardSizeNew3x5.eps Converted\R_GiftcardSizeNew3x5.jpg
在 Java 中,我在以下代码中使用几乎完全相同的命令:
public void convertEPStoJPG()
{ //commands
ArrayList<String> cmds = new ArrayList<String>();
//absolute file paths of eps files retrieved using a helper method
ArrayList<String> filePaths = this.getFilePaths();
//beginning cmd line calls
cmds.add("cmd.exe");
cmds.add("/c");
cmds.add("cd C:\\Program Files\\ImageMagick-6.8.9-Q16\\");
for (int i = 0; i < filePaths.size(); i++)
{
//conversion calls
String tempPath = filePaths.get(i);
//shortening path name
tempPath = tempPath.substring(tempPath.lastIndexOf("\\") + 1, tempPath.length());
//adding command of "convert Raw\\image.eps Converted\\image.jpg"
cmds.add("convert \\Naked Wines\\Raw\\" + tempPath + " \\Naked Wines\\Converted\\" +
tempPath.substring(0,tempPath.length() - 3) + "jpg");
}
//building process with commands
ProcessBuilder pb = new ProcessBuilder(cmds);
Process process;
try {
pb.redirectErrorStream(true);
//executing commands
process = pb.start();
BufferedReader r = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while (true) {
line = r.readLine();
if (line == null) { break; }
//print output from command execution
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
}
}
我试图抓取的文件是 C:\Program Files\ImageMagick-6.8.9-Q16\Naked Wines\Raw 我要转换到的目的地是 C:\Program Files\ImageMagick-6.8.9-Q16\Naked Wines\Converted。
我收到一条错误消息,指出“系统找不到指定的路径”。查看以前回答的问题,例如How to override Windows' convert command by ImageMagick's one?,人们建议您必须覆盖 Windows convert 命令。这会是错误的原因,还是我遗漏了什么?我对 ImageMagick 还很陌生,可能错过或误解了一些东西。
【问题讨论】:
标签: java imagemagick imagemagick-convert