1

Я пытаюсь разработать программу, которая будет делать снимок веб-страницы, а затем сравнить ее со старой и выделить изменения, если таковые имеются.jMagick - сравнение изображений

Я использую Selenium- WebDriver для снятия моментальных снимков. Для обработки и сравнения изображений после небольшого поиска в Google я нашел jMagick, интерфейс Java для ImageMagick, который, я думаю, будет лучше всего соответствовать моим требованиям.

Но из-за отсутствия надлежащей документации я не могу найти что-либо релевантное. Если бы кто-нибудь мог помочь мне с любым примером кода для сравнения изображений, это было бы очень полезно.

Опять же, проблема состоит в том, чтобы сравнить два изображения и выделить изменения или различия между ними. Результатом может быть третье изображение с выделенными различиями.

Возможные дубликаты для этого: this и this. Но опять же, из них не было никакого правильного решения.

Пожалуйста, если кто-то может пролить свет на это или может быть какое-то другое решение в java, которое будет работать.

ответ

0

Если вы в порядке с выполнением системных вызовов, вы можете использовать pdiff. http://pdiff.sourceforge.net/ Инструмент был написан для сравнения движков рендеринга и выводит различия между двумя файлами в новый файл. Однако, похоже, у него нет привязок Java.

0

В этой ссылке вы можете найти пример сравнения изображений с использованием jMagick. Они использовали функцию командной строки сравнения для сравнения изображений.

Фрагмент кода:

String[] cmd = new String[] {"compare","-metric","MSE",file1,file2,"tempcompareImage.jpg"}; 

https://github.com/techblue/jmagick/blob/master/test/magicktest/MagickTesttools.java

Кроме того, вы можете найти подробную информацию о функции сравнения здесь: http://www.imagemagick.org/Usage/compare/

1
boolean compareSuccess = compareImages("src/main/1.jpg","src/test/resources/bag_frame2.gif", "src/test/resources/ex.gif"); 
//(input1,input2,outputfile) 
//(boolean=true if same image...false if changes in image) 
compareImages (String data,String data1, String diff) { 

    CompareCmd compare = new CompareCmd(); 

    // For metric-output 
    compare.setErrorConsumer(StandardStream.STDERR); 
    IMOperation cmpOp = new IMOperation(); 
    // Set the compare metric 
    cmpOp.metric("mae"); 

    // Add the expected image 
    cmpOp.addImage(data); 

    // Add the current image 
    cmpOp.addImage(data1); 

    // This stores the difference 
    cmpOp.addImage(diff); 

    try { 
    // Do the compare 
    compare.run(cmpOp); 
    return true; 
    } 
    catch (Exception ex) { 
    return false; 
    } 
} 

Попробуйте this.And не забудьте импортировать im4java или Maven

+0

Я использую тот же код, но мой код не может распознать " CompareCmd compare = new CompareCmd(); " Любые предложения? –

+0

Используйте im4java jar или maven dependency.Then попробуйте это снова. –

Смежные вопросы