Configuration
All these configurations can be updated based on your needs.
Property | Description |
---|---|
threshold |
The threshold which means the max distance between non-equal pixels. Could be changed according size and requirements to the image. |
rectangleLineWidth |
Width of the line that is drawn the rectangle. |
destination |
File of the result destination. |
minimalRectangleSize |
The number of the minimal rectangle size. Count as (width x height). By default it’s 1. |
maximalRectangleCount |
Maximal count of the Rectangles, which would be drawn. It means that would get first x biggest rectangles. Default value is -1, that means that all the rectangles would be drawn. |
pixelToleranceLevel |
Level of the pixel tolerance. By default it’s 0.1 -> 10% difference. The value can be set from 0.0 to 0.99. |
excludedAreas |
ExcludedAreas contains a List of Rectangles to be ignored when comparing images. |
drawExcludedRectangles |
Flag which says draw excluded rectangles or not. |
fillExcludedRectangles |
Flag which says fill excluded rectangles or not. |
percentOpacityExcludedRectangles |
The desired opacity of the excluded rectangle fill. |
fillDifferenceRectangles |
Flag which says fill difference rectangles or not. |
percentOpacityDifferenceRectangles |
The desired opacity of the difference rectangle fill. |
allowingPercentOfDifferentPixels |
The percent of the allowing pixels to be different to stay MATCH for comparison. E.g. percent of the pixels, which would ignore in comparison. Value can be from 0.0 to 100.00 |
differenceRectangleColor |
Rectangle color of image difference. By default, it’s red. |
excludedRectangleColor |
Rectangle color of excluded part. By default, it’s green. |
Release Notes
Can be found in RELEASE_NOTES.
Maven
<dependency>
<groupId>com.github.romankh3</groupId>
<artifactId>image-comparison</artifactId>
<version>4.4.0</version>
</dependency>
Gradle
compile 'com.github.romankh3:image-comparison:4.4.0'
To compare two images programmatically
Default way to compare two images looks like:
//load images to be compared:
BufferedImage expectedImage = ImageComparisonUtil.readImageFromResources("expected.png");
BufferedImage actualImage = ImageComparisonUtil.readImageFromResources("actual.png");
//Create ImageComparison object and compare the images.
ImageComparisonResult imageComparisonResult = new ImageComparison(expectedImage, actualImage).compareImages();
//Check the result
assertEquals(ImageComparisonState.MATCH, imageComparisonResult.getImageComparisonState());
Save result image
To save result image, can be used two ways:
- add a file to save to constructor. ImageComparison will save the result image in this case.
//load images to be compared:
BufferedImage expectedImage = ImageComparisonUtil.readImageFromResources("expected.png");
BufferedImage actualImage = ImageComparisonUtil.readImageFromResources("actual.png");
// where to save the result (leave null if you want to see the result in the UI)
File resultDestination = new File( "result.png" );
//Create ImageComparison object with result destination and compare the images.
ImageComparisonResult imageComparisonResult = new ImageComparison(expectedImage, actualImage, resultDestination).compareImages();
- execute ImageComparisonUtil.saveImage static method
//load images to be compared:
BufferedImage expectedImage = ImageComparisonUtil.readImageFromResources("expected.png");
BufferedImage actualImage = ImageComparisonUtil.readImageFromResources("actual.png");
//Create ImageComparison object with result destination and compare the images.
ImageComparisonResult imageComparisonResult = new ImageComparison(expectedImage, actualImage).compareImages();
//Image can be saved after comparison, using ImageComparisonUtil.
ImageComparisonUtil.saveImage(resultDestination, imageComparisonResult.getResult());
Demo
Demo shows how image-comparison
works.
Expected Image
Actual Image
Result
Code of Conduct
Please, follow Code of Conduct page.
Thanks @dee-y for designing this logo
Also if you’re interesting - see my other repositories
- skyscanner-flight-api-clinet - Client for a Skyscanner Flight Search API hosted in Rapid API
- Flights Monitoring - app for monitoring flights cost based on Skyscanner API
- Raspberry home ecosystem - home ecosystem based on raspberry pi.
- Movie Tracking - Simple API for tracking movies with favorite actors for the specific time.
- Tic Tac Toe NxM - Own implementation. For any rectangle and any winner line count.