0

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)
4

1 に答える 1

1

これは、im4java を単独で使用するか、im4java+gm4java を使用して実現できます。gm4java が提供するのは、大量の画像を処理する必要がある場合のパフォーマンスです。

あなたが得ている問題は、addRawArgs()メソッドの不適切な使用によるものです。コマンドラインにある各引数は、1 つの文字列にまとめてではなく、個別の引数として追加する必要があります。

試す:

op.addRawArgs("-file", "C:/output/diffFile.pdf");
于 2015-02-11T14:19:34.977 に答える