我正在尝试使用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)
您可以通过单独使用im4java或im4java+gm4java来实现这一点。gm4java为您提供的是当您需要处理大量图像时的性能。
您遇到的问题是由于addRawArgs()
方法使用不当造成的。命令行中的每个参数都需要作为单独的参数添加,而不是全部添加在一个字符串中。
尝试:
op.addRawArgs("-file", "C:/output/diffFile.pdf");