使用im4java + gm4java运行GraphicsMagick compare命令

时间:2015-02-11 00:06:46

标签: java graphicsmagick im4java

我正在尝试使用im4java和gm4java进行GraphicsMagick比较。我正在使用的GraphicsMagick命令是这样的:

gm compare -maximum-error 0 -metric MAE -highlight-style xor -hilight-color red -file C:/output/diffFile.pdf C:/input/file1.pdf C:/input/file2.pdf

我正在尝试将其转换为Java。我知道im4java最初是为ImageMagick构建的,它们的命令可能不同。是否可以使用im4java和gm4java运行上述比较?

我试过这个:

SimpleGMService service = new SimpleGMService();
service.setGMPath("C:/path/to/graphicsMagick/gm.exe");

try
{
    GMConnection connection = service.getConnection();
    try {
        GMBatchCommand command = new GMBatchCommand(service, "compare");
        // create the operation, add images and operators/options
        IMOperation op = new IMOperation();
        op.metric("MAE");
        op.addRawArgs("-file C:/output/diffFile.pdf");
        op.addImage();
        op.addImage();

        ArrayListOutputConsumer output = new ArrayListOutputConsumer();
        command.setOutputConsumer(output);

        //debug
        command.createScript("C:/output/myscript.bat",op);

        command.run(op, "C:/input/file1.pdf", "C:/input/file2.pdf");

....

上面给出了错误:

org.im4java.core.CommandException: compare: Unrecognized option (-file C:/output/diffFile.pdf)

1 个答案:

答案 0 :(得分:0)

您可以通过单独使用im4java或im4java + gm4java来实现此目的。当你需要处理大量图像时,gm4java给你的是性能。

您遇到的问题是由于addRawArgs()方法使用不当造成的。您在命令行中的每个参数都需要作为单独的参数添加,而不是一起添加到一个字符串中。

尝试:

op.addRawArgs("-file", "C:/output/diffFile.pdf");