diff --git a/.gradle/8.3/executionHistory/executionHistory.bin b/.gradle/8.3/executionHistory/executionHistory.bin index faa431d3e9bc95eafc2b519d4c58569a7de89e2e..4f6382c184eabecbd335e26486b281b4cf4daf71 100644 Binary files a/.gradle/8.3/executionHistory/executionHistory.bin and b/.gradle/8.3/executionHistory/executionHistory.bin differ diff --git a/.gradle/8.3/executionHistory/executionHistory.lock b/.gradle/8.3/executionHistory/executionHistory.lock index 055e7813d940ddf8fae316945a96a262acd62cd1..62a6a9ee70cd6c52c2fa0a3291187888fb50fd26 100644 Binary files a/.gradle/8.3/executionHistory/executionHistory.lock and b/.gradle/8.3/executionHistory/executionHistory.lock differ diff --git a/.gradle/8.3/fileHashes/fileHashes.bin b/.gradle/8.3/fileHashes/fileHashes.bin index bf01ebcc9ce53cb6db31b13b8288fb318a2c1246..51f71e9c932e0ab839e3009fc85e46e1dc2cc507 100644 Binary files a/.gradle/8.3/fileHashes/fileHashes.bin and b/.gradle/8.3/fileHashes/fileHashes.bin differ diff --git a/.gradle/8.3/fileHashes/fileHashes.lock b/.gradle/8.3/fileHashes/fileHashes.lock index ff411491ef1b68e57098fa482ba2c4941e415050..202e6a3ec2fc70ea7aa5e103dde72d55685e1238 100644 Binary files a/.gradle/8.3/fileHashes/fileHashes.lock and b/.gradle/8.3/fileHashes/fileHashes.lock differ diff --git a/.gradle/8.3/fileHashes/resourceHashesCache.bin b/.gradle/8.3/fileHashes/resourceHashesCache.bin index ff70ef0e11a83d02d3ba42aaa702694f76f78f3a..d8cea3c56d8fd758d5b408f209f4e99393965978 100644 Binary files a/.gradle/8.3/fileHashes/resourceHashesCache.bin and b/.gradle/8.3/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 3e94c0722d63d3529f8844cb5473248eb4c0db73..db8fe93b84f4de9132047ab34768545b54d91dec 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index 92abf3e3b288ae24db14f2c5a942864877557654..12cf30d77a1bed11bbe6cabfd5b4ffa1aeb486b6 100644 Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ diff --git a/build/classes/java/main/Display.class b/build/classes/java/main/Display.class index f9ba28422a1eaee46c98e8c0390342dfa147e21f..a76ef314521ee9fbfc354abfba4f2fbdcd0cb270 100644 Binary files a/build/classes/java/main/Display.class and b/build/classes/java/main/Display.class differ diff --git a/build/classes/java/main/Pixelate.class b/build/classes/java/main/Pixelate.class new file mode 100644 index 0000000000000000000000000000000000000000..729b874dccdc98ae4e426dd1f85f1616d6b58c6f Binary files /dev/null and b/build/classes/java/main/Pixelate.class differ diff --git a/build/classes/java/test/PixelateTest.class b/build/classes/java/test/PixelateTest.class new file mode 100644 index 0000000000000000000000000000000000000000..1ba626cbc1f133e170b7c6c9339c987c008c0c3c Binary files /dev/null and b/build/classes/java/test/PixelateTest.class differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Display.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/Display.class.uniqueId0 index f9ba28422a1eaee46c98e8c0390342dfa147e21f..a76ef314521ee9fbfc354abfba4f2fbdcd0cb270 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Display.class.uniqueId0 and b/build/tmp/compileJava/compileTransaction/stash-dir/Display.class.uniqueId0 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Outline.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/Outline.class.uniqueId1 deleted file mode 100644 index 568cb260dfee6c163cada1fb364401b62c1f4413..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Outline.class.uniqueId1 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Pixelate.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/Pixelate.class.uniqueId1 new file mode 100644 index 0000000000000000000000000000000000000000..656924cc69183fd4d1c9f81a7bfd80f59a0b065c Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/Pixelate.class.uniqueId1 differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index 05ed6ce2a2fb7bdbd4f27496fc2cf80c5ea2fe6a..64db03ff04a968e653af2394d4508cf16be25b92 100644 Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ diff --git a/build/tmp/compileTestJava/compileTransaction/stash-dir/DecreaseGrayLevelsTest.class.uniqueId0 b/build/tmp/compileTestJava/compileTransaction/stash-dir/DecreaseGrayLevelsTest.class.uniqueId0 deleted file mode 100644 index 9187d8e0714b979389374fe033a806665a74db76..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileTestJava/compileTransaction/stash-dir/DecreaseGrayLevelsTest.class.uniqueId0 and /dev/null differ diff --git a/build/tmp/compileTestJava/compileTransaction/stash-dir/PixelateTest.class.uniqueId0 b/build/tmp/compileTestJava/compileTransaction/stash-dir/PixelateTest.class.uniqueId0 new file mode 100644 index 0000000000000000000000000000000000000000..ecefa7587d7990469dc03a4e8fda0eba2fd10f3b Binary files /dev/null and b/build/tmp/compileTestJava/compileTransaction/stash-dir/PixelateTest.class.uniqueId0 differ diff --git a/build/tmp/compileTestJava/previous-compilation-data.bin b/build/tmp/compileTestJava/previous-compilation-data.bin index 22f4d54e8cc10e1eb8d63f66c62ca6b046b88ca4..983031c7cda2ae98206bf88258456cf462ccf183 100644 Binary files a/build/tmp/compileTestJava/previous-compilation-data.bin and b/build/tmp/compileTestJava/previous-compilation-data.bin differ diff --git a/src/main/java/Display.java b/src/main/java/Display.java index 030bcc504b676496032b08965a837d076544a087..c1c327603efedcff5d14d8480835b9ce3d53ec04 100644 --- a/src/main/java/Display.java +++ b/src/main/java/Display.java @@ -21,7 +21,7 @@ public class Display implements Initializable { this.image = MatrixGrayImage.createImageFromPGMFile("images/luminy.pgm"); - transform transformation = new Outline(0.025); + transform transformation = new Pixelate(10); transformation.applyTo(this.image); diff --git a/src/main/java/Pixelate.java b/src/main/java/Pixelate.java new file mode 100644 index 0000000000000000000000000000000000000000..3c22ae5aaa07abf4c000ecac79b822ef51b1583f --- /dev/null +++ b/src/main/java/Pixelate.java @@ -0,0 +1,40 @@ +import java.util.ArrayList; +import java.util.List; + +public class Pixelate implements transform { + private int newPixelSize; + + public Pixelate(int newPixelSize) { + this.newPixelSize = newPixelSize; + } + + public void applyTo(GrayImage image) { + + GrayColor newColor = new ByteGrayColor(); + + for (int i = 0; i < image.getWidth() - this.newPixelSize; i += this.newPixelSize) { + for (int j = 0; j < image.getHeight() - this.newPixelSize; j += this.newPixelSize) { + newColor = averageColor(image, i, j); + for (int square1 = 0; square1 < this.newPixelSize; square1++) + for (int square2 = 0; square2 < this.newPixelSize; square2++) + image.setPixel(newColor, i+square1, j+square2); + + } + } + } + + public GrayColor averageColor(GrayImage image, int x, int y) { + double average = 0; + + for (int i = 0; i < this.newPixelSize; i++) { + for (int j = 0; j < this.newPixelSize; j++) { + average += image.getPixelGrayColor(x + i, y + j).getLuminosity(); + } + } + + average /= Math.pow(this.newPixelSize, 2); + + return new ByteGrayColor(average); + } +} + diff --git a/src/test/java/PixelateTest.java b/src/test/java/PixelateTest.java new file mode 100644 index 0000000000000000000000000000000000000000..bc664f2978447503dd133476408f9d5e8fa20ca1 --- /dev/null +++ b/src/test/java/PixelateTest.java @@ -0,0 +1,27 @@ +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.*; + +public class PixelateTest { + + @Test + public void testAverage(){ + GrayImage image = new MatrixGrayImage(2, 2); + + GrayColor color1 = new ByteGrayColor(1.); + GrayColor color2 = new ByteGrayColor(1.); + GrayColor color3 = new ByteGrayColor(0.); + GrayColor color4 = new ByteGrayColor(0.); + + image.setPixel(color1, 0, 0); + image.setPixel(color2, 1, 0); + image.setPixel(color3, 0, 1); + image.setPixel(color4, 1, 1); + + Pixelate pixelate = new Pixelate(2); + + assertThat(pixelate.averageColor(image, 0, 0).getLuminosity()).isEqualTo(new ByteGrayColor(0.5).getLuminosity()); + + } +}