diff --git a/stegano/steganalysis/parity.py b/stegano/steganalysis/parity.py index 0dfb3ac..6034664 100644 --- a/stegano/steganalysis/parity.py +++ b/stegano/steganalysis/parity.py @@ -31,7 +31,7 @@ def steganalyse(img: Image.Image) -> Image.Image: """ Steganlysis of the LSB technique. """ - encoded: Image.Image = img.copy() + encoded = Image.new(img.mode, (img.size)) width, height = img.size for row in range(height): for col in range(width): diff --git a/tests/expected-results/parity_rgba.png b/tests/expected-results/parity_rgba.png new file mode 100644 index 0000000..a1cf2af Binary files /dev/null and b/tests/expected-results/parity_rgba.png differ diff --git a/tests/test_steganalysis.py b/tests/test_steganalysis.py index 26ae607..61dac1c 100644 --- a/tests/test_steganalysis.py +++ b/tests/test_steganalysis.py @@ -50,6 +50,15 @@ class TestSteganalysis(unittest.TestCase): diff = ImageChops.difference(target, analysis).getbbox() self.assertTrue(diff is None) + def test_parity_rgba(self): + """ Test that stegano.steganalysis.parity works with RGBA images + """ + img = Image.open('./tests/sample-files/transparent.png') + analysis = parity.steganalyse(img) + target = Image.open("./tests/expected-results/parity_rgba.png") + diff = ImageChops.difference(target, analysis).getbbox() + self.assertTrue(diff is None) + if __name__ == '__main__': unittest.main()