diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d45fbe..659602d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # Changelog [[Unreleased]] +- [diff is displayed if images only differ in their alpha channel](https://github.com/ehmkah/imgdiff/issues/78) ## [1.12.0] - Upgrade project to JDK 21 from JDK 11 diff --git a/src/main/kotlin/de/ehmkah/projects/imgdiff/DiffedImageCreator.kt b/src/main/kotlin/de/ehmkah/projects/imgdiff/DiffedImageCreator.kt index 2f38c17..40069e4 100644 --- a/src/main/kotlin/de/ehmkah/projects/imgdiff/DiffedImageCreator.kt +++ b/src/main/kotlin/de/ehmkah/projects/imgdiff/DiffedImageCreator.kt @@ -74,16 +74,18 @@ class DiffedImageCreator { val r1 = rgb1 shr 16 and 0xff val g1 = rgb1 shr 8 and 0xff val b1 = rgb1 and 0xff + val a1 = rgb1 shr 24 and 0xff val r2 = rgb2 shr 16 and 0xff val g2 = rgb2 shr 8 and 0xff val b2 = rgb2 and 0xff + val a2 = rgb2 shr 24 and 0xff diff = Math.abs(r1 - r2) diff += Math.abs(g1 - g2) diff += Math.abs(b1 - b2) diff /= 3 diffPixel = diff shl 16 or (diff shl 8) or diff - if (diffPixel == 0) { + if (diffPixel == 0 && a1 == a2) { diffPixel = backgroundColor(currentWidth, currentHeight) } else { diffPixel = differentValue diff --git a/src/test/kotlin/de/ehmkah/projects/imgdiff/DiffedImageCreatorTest.kt b/src/test/kotlin/de/ehmkah/projects/imgdiff/DiffedImageCreatorTest.kt index a4ce6ab..7000ee0 100644 --- a/src/test/kotlin/de/ehmkah/projects/imgdiff/DiffedImageCreatorTest.kt +++ b/src/test/kotlin/de/ehmkah/projects/imgdiff/DiffedImageCreatorTest.kt @@ -69,6 +69,17 @@ class DiffedImageCreatorTest { assertTrue(compareImages(expected, actual)) } + @Test + fun testDifferentAlphaChannel() { + val original = readImage("/black.png") + val changed = readImage("/blackAlpha.png") + + val actual = sut.getDifferenceImageWhiteAsBackground(original, changed) + val expected = readImage("/expectedAlphaDiff.png") + + assertTrue(compareImages(expected, actual)) + } + @Test fun testImagesHaveNoDiff() { val original = readImage("/identical.png") diff --git a/src/test/resources/black.png b/src/test/resources/black.png new file mode 100644 index 0000000..b7e2bdb Binary files /dev/null and b/src/test/resources/black.png differ diff --git a/src/test/resources/blackAlpha.png b/src/test/resources/blackAlpha.png new file mode 100644 index 0000000..4a4cbc9 Binary files /dev/null and b/src/test/resources/blackAlpha.png differ diff --git a/src/test/resources/expectedAlphaDiff.png b/src/test/resources/expectedAlphaDiff.png new file mode 100644 index 0000000..34dff39 Binary files /dev/null and b/src/test/resources/expectedAlphaDiff.png differ