From a5e6a440c9e3667c397a70cbab857860ad2bf144 Mon Sep 17 00:00:00 2001 From: Michael Krausse Date: Sun, 26 Jul 2026 15:58:54 +0200 Subject: [PATCH 1/4] =?UTF-8?q?78:=20different=20alpha=20channels:=20test?= =?UTF-8?q?=20images=20created=E2=81=84=E2=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/resources/black.png | Bin 0 -> 310 bytes src/test/resources/blackAlpha.png | Bin 0 -> 646 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/test/resources/black.png create mode 100644 src/test/resources/blackAlpha.png diff --git a/src/test/resources/black.png b/src/test/resources/black.png new file mode 100644 index 0000000000000000000000000000000000000000..b7e2bdb0bbbba9d0bebd3ecf643d28cd213f82a5 GIT binary patch literal 310 zcmeAS@N?(olHy`uVBq!ia0y~yV4MJCpWt8ulAh%XTY=PHPZ!6Kid%0FGBN^r4HN#Y ff5!pRFd~4&s!|3bP0l+XkK80!?Y literal 0 HcmV?d00001 diff --git a/src/test/resources/blackAlpha.png b/src/test/resources/blackAlpha.png new file mode 100644 index 0000000000000000000000000000000000000000..4a4cbc98d381bee010eac63c4814d161ae2de00c GIT binary patch literal 646 zcmeAS@N?(olHy`uVBq!ia0y~yV4MJCpWt8vlE*~1KVo2D^7V9a45_&F_NpN-0|Uo_ z4W8~+au%NbQa3iQVr*a*WH1n5;9+54W<21)07SIpK`epUKm(p2BeJ0|UqLLSI!}Os tj+Vg!4H83C=Q%LI(*V$HoW}piV@y%=R1I(o;sK^F22WQ%mvv4FO#s6wSB3xp literal 0 HcmV?d00001 From fdb27550b7e18841d2b5f95b45f0da29dc3fec0c Mon Sep 17 00:00:00 2001 From: Michael Krausse Date: Sun, 26 Jul 2026 16:11:32 +0200 Subject: [PATCH 2/4] 78: different alpha channels: test written --- .../projects/imgdiff/DiffedImageCreatorTest.kt | 11 +++++++++++ src/test/resources/expectedAlphaDiff.png | Bin 0 -> 740 bytes 2 files changed, 11 insertions(+) create mode 100644 src/test/resources/expectedAlphaDiff.png 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/expectedAlphaDiff.png b/src/test/resources/expectedAlphaDiff.png new file mode 100644 index 0000000000000000000000000000000000000000..34dff39996e1a21e2d7566e760a34adfccecc757 GIT binary patch literal 740 zcmeAS@N?(olHy`uVBq!ia0y~yV4MJCpWt8ulAh%XTNxObR(rZQhE&A8z2eBrpdfHy z!)JY7_K1hA3_Kf_c*YBFi2TixC9cIsN- Uw43i-fvK0l)78&qol`;+0Huu68~^|S literal 0 HcmV?d00001 From 6b80fb02f0d9475b2547e780d97b664732b1095f Mon Sep 17 00:00:00 2001 From: Michael Krausse Date: Sun, 26 Jul 2026 16:15:37 +0200 Subject: [PATCH 3/4] 78: different alpha channels: implemented fix --- .../kotlin/de/ehmkah/projects/imgdiff/DiffedImageCreator.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 From c645ac86762d35915228a959141e6a5c9be715ea Mon Sep 17 00:00:00 2001 From: Michael Krausse Date: Sun, 26 Jul 2026 16:18:49 +0200 Subject: [PATCH 4/4] 78: different alpha channels: update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) 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