我有两个图像,我想与ImageMagick Java包装器'im4java'进行比较。目前我有这段代码:
boolean compare (String picture1, String picture2) {
boolean pdfsEqual;
IMOperation imOperation = new IMOperation();
imOperation.metric("ae");
imOperation.addImage();
imOperation.addImage();
imOperation.addImage();
CompareCmd compare = new CompareCmd();
ArrayListOutputConsumer outputConsumer = new ArrayListOutputConsumer();
compare.setOutputConsumer(outputConsumer);
try{
compare.run(imOperation, pathSample, pathResult, "null:");
pdfsEqual = true;
} catch (Exception e){
pdfsEqual = false;
ArrayList<String> stringArrayList = outputConsumer.getOutput();
System.out.println(stringArrayList);
}
return pdfsEqual;
}
但是stringArrayList
是空的。阅读im4java
文档,我发现实际上OutputConsumer
将输出存储在数组列表中,但正如已经说过的,没有任何东西。此外,imOperation.metric("ae")
计算两个图像之间不同的像素,如果调用是从命令提示符本身完成的,则将其打印到控制台。我不知道如何在我的java代码中使用OutputConsumer
获得这个数字的diff像素。
试试
ArrayListErrorConsumer and setErrorConsumer
代替
ArrayListOutputConsumer and setOutputConsumer
我不知道为什么它出现在错误的消费者身上。