diff --git a/src/test/java/com/cringe_studios/cristmastreescanning/ExampleTest.java b/src/test/java/com/cringe_studios/cristmastreescanning/ExampleTest.java index b5a5409..cfe9d87 100644 --- a/src/test/java/com/cringe_studios/cristmastreescanning/ExampleTest.java +++ b/src/test/java/com/cringe_studios/cristmastreescanning/ExampleTest.java @@ -2,8 +2,9 @@ package com.cringe_studios.cristmastreescanning; import static org.junit.jupiter.api.Assertions.assertEquals; import java.awt.Color; -import java.awt.Point; +import java.awt.geom.Point2D; import java.awt.image.BufferedImage; +import java.awt.image.DataBufferInt; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -22,17 +23,17 @@ public class ExampleTest { } @Test - public void generateVisualTestImagees() { + public void generateVisualTestImages() { Path results; try { results = Files.createTempDirectory("testResult"); for(int i = 0; i < 100; i++) { try { BufferedImage image = ImageIO.read(ExampleTest.class.getResourceAsStream("/0_" + i + ".png")); - Point p = ImageScanner.getBrightestSpot(image); + Point2D p = ImageScanner.getBrightestSpot(image); for(int j = -2; j < 2; j++) { for(int k = -2; k < 2; k++) { - if(p.x + j > 0 && p.x + j < image.getWidth() && p.y + k > 0 && p.y + k < image.getHeight()) image.setRGB(p.x + j, p.y + k, Color.red.getRGB()); + if((int) p.getX() + j > 0 && (int) p.getX() + j < image.getWidth() && (int) p.getY() + k > 0 && (int) p.getY() + k < image.getHeight()) image.setRGB((int) p.getX() + j, (int) p.getY() + k, Color.red.getRGB()); } } ImageIO.write(image, "png", Files.newOutputStream(results.resolve(String.valueOf(i) + ".png"))); @@ -44,5 +45,78 @@ public class ExampleTest { e.printStackTrace(); } } + + @Test + public void generateVisualTestImagesWithOldMethod() { + Path results; + try { + results = Files.createTempDirectory("testResultOldWay"); + + for(int i = 0; i < 100; i++) { + try { + BufferedImage image = ImageIO.read(ExampleTest.class.getResourceAsStream("/0_" + i + ".png")); + + BufferedImage bi2 = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB); + bi2.createGraphics().drawImage(image, 0, 0, null); + int[] colors = ((DataBufferInt) bi2.getRaster().getDataBuffer()).getData(); + int x = -1, y = -1, brightness = 0; + boolean multipleBright = true; + int boxLeangth = 3; + + while (multipleBright) { + if(boxLeangth > 1000) { + System.out.println("alles gleich hell"); + return; + } + for (int ä = 0; ä < colors.length; ä++) { + int b = 0; + + x: for (int k = 0; k < boxLeangth; k++) { + y: for (int j = 0; j < boxLeangth; j++) { + int c = ä; + if (c + j - boxLeangth / 2 > 0 && c + j - boxLeangth / 2 < colors.length) { + c += j - boxLeangth / 2; + } else { + continue y; + } + if (c + (k - boxLeangth / 2) * bi2.getWidth() > 0 && c + (k - boxLeangth / 2) * bi2.getWidth() < colors.length) { + c += (k - boxLeangth / 2) * bi2.getWidth(); + } else { + continue x; + } + b += colors[c] & 255 + ((colors[c] >> 8) & 255) + ((colors[c] >> 8) & 255); + } + } + + if (b > brightness) { + brightness = b; + x = ä % bi2.getWidth(); + y = ä / bi2.getWidth(); + multipleBright = false; + } else if (b == brightness) { + multipleBright = true; + } + } + if(multipleBright) { + boxLeangth += 2; + } + } + + for(int j = -2; j < 2; j++) { + for(int k = -2; k < 2; k++) { + if(x + j > 0 && x + j < image.getWidth() && y + k > 0 && y + k < image.getHeight()) image.setRGB(x + j, y + k, Color.red.getRGB()); + } + } + ImageIO.write(image, "png", Files.newOutputStream(results.resolve(String.valueOf(i) + ".png"))); + + } catch (IOException e) { + e.printStackTrace(); + } + } + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } }