2015-02-11 36 views
0

我正在嘗試使用im4java和gm4java進行GraphicsMagick比較。我使用的GraphicsMagick命令是這樣的:使用im4java + gm4java運行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 plus 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) 

回答

0

您可以通過使用im4java單獨或im4java + gm4java達到這一點。當你需要處理大量的圖像時,gm4java給你的是性能。

您遇到的問題是由於addRawArgs()方法的不當使用造成的。您在命令行中擁有的每個參數都需要添加爲單個參數,而不是一個字符串中的所有參數。

嘗試:

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

感謝肯尼斯!你是對的,我沒有正確使用addRawArgs方法。我正在構建一個迴歸測試器,最終需要處理大量文件,以便gm4java可以派上用場。你能夠創造它真棒! – 2015-02-11 19:48:27

+0

@Chuck,很高興能夠幫助並高興地發現gm4java對你有用。 – 2015-02-12 13:59:11

+0

@ben,感謝您編輯答案。現在它讀得好多了。 – 2015-02-12 14:48:13