From 4fbc3d98dd05335bd1936c166416c39824aa62dd Mon Sep 17 00:00:00 2001 From: Kea Horvath Date: Thu, 16 Mar 2023 21:47:40 +0100 Subject: [PATCH] realisation de API algo --- .../src/main/java/pdl/backend/Algorithm.java | 55 +++++++++++++++++++ .../java/pdl/backend/ImageController.java | 39 ++++++++++++- .../java/pdl/backend/ImageProcessing.java | 1 - .../src/main/java/pdl/backend/Parameter.java | 37 +++++++++++++ 4 files changed, 130 insertions(+), 2 deletions(-) create mode 100644 backend/src/main/java/pdl/backend/Algorithm.java create mode 100644 backend/src/main/java/pdl/backend/Parameter.java diff --git a/backend/src/main/java/pdl/backend/Algorithm.java b/backend/src/main/java/pdl/backend/Algorithm.java new file mode 100644 index 0000000..36161d4 --- /dev/null +++ b/backend/src/main/java/pdl/backend/Algorithm.java @@ -0,0 +1,55 @@ +package pdl.backend; + +import java.util.ArrayList; + +import org.springframework.http.HttpStatus; +import org.springframework.web.server.ResponseStatusException; + +public class Algorithm { + private final String name; + private final String pass; + private final ArrayList parameters; + + public Algorithm(String name, String pass) { + this.name = name; + this.pass = pass; + this.parameters = new ArrayList<>(); + switch (pass) { + case "changeLuminosity": + Parameter param1 = new Parameter("delta", "", -255, 255, false); + this.parameters.add(param1); + break; + case "histogram": + break; + case "colorFilter": + Parameter param2 = new Parameter("hue", "Teinte", 0, 360, false); + this.parameters.add(param2); + break; + case "meanFilter": + Parameter param3 = new Parameter("size", "Taille du filtre", 1, 101, true); + this.parameters.add(param3); + break; + case "gaussienFilter": + Parameter param4 = new Parameter("size", "Taille du filtre", 1, 101, true); + this.parameters.add(param4); + break; + case "contours": + break; + default: + throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Invalid pass"); + + } + } + + public String getName() { + return this.name; + } + + public String getPass() { + return this.pass; + } + + public ArrayList getParameters() { + return this.parameters; + } +} diff --git a/backend/src/main/java/pdl/backend/ImageController.java b/backend/src/main/java/pdl/backend/ImageController.java index 3d46b87..9e65738 100644 --- a/backend/src/main/java/pdl/backend/ImageController.java +++ b/backend/src/main/java/pdl/backend/ImageController.java @@ -5,12 +5,12 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URI; +import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.Map; import javax.imageio.ImageIO; -import javax.print.attribute.standard.Media; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; @@ -113,6 +113,43 @@ public class ImageController { return nodes; } + @GetMapping(value = "/algorithms", produces = "application/json") + @ResponseBody + public ArrayNode getAlgorithmList() { + ArrayList algorithms = new ArrayList(); + Algorithm algo = new Algorithm("Changement de luminosité", "changeLuminosity"); + algorithms.add(algo); + algo = new Algorithm("Changement de teinte", "colorFilter"); + algorithms.add(algo); + algo = new Algorithm("Filtre Moyenneur", "meanFilter"); + algorithms.add(algo); + algo = new Algorithm("Filtre Gaussien", "gaussienFilter"); + algorithms.add(algo); + algo = new Algorithm("Détection de contours", "contours"); + algorithms.add(algo); + algo = new Algorithm("Histogramme", "histogram"); + algorithms.add(algo); + + ArrayNode nodes = mapper.createArrayNode(); + for (Algorithm a : algorithms) { + ObjectNode objectNode = mapper.createObjectNode(); + objectNode.put("name", a.getName()); + objectNode.put("pass", a.getPass()); + ArrayNode parameters = objectNode.putArray("parameters"); + for (Parameter p : a.getParameters()) { + ObjectNode paramNode = mapper.createObjectNode(); + paramNode.put("name", p.getName()); + paramNode.put("displayName", p.getDisplayName()); + paramNode.put("min", p.getMin()); + paramNode.put("max", p.getMax()); + paramNode.put("mustBeOdd", p.mustBeOdd()); + parameters.add(paramNode); + } + nodes.add(objectNode); + } + return nodes; + } + @GetMapping(value = "/images/{id}", produces = { MediaType.IMAGE_JPEG_VALUE, MediaType.IMAGE_PNG_VALUE, "application/json" }) public ResponseEntity getImage(@PathVariable("id") long id, diff --git a/backend/src/main/java/pdl/backend/ImageProcessing.java b/backend/src/main/java/pdl/backend/ImageProcessing.java index 5647e6f..2b98e3c 100644 --- a/backend/src/main/java/pdl/backend/ImageProcessing.java +++ b/backend/src/main/java/pdl/backend/ImageProcessing.java @@ -2,7 +2,6 @@ package pdl.backend; import boofcv.struct.image.GrayU8; import boofcv.struct.image.Planar; -import boofcv.alg.color.ColorHsv; public class ImageProcessing { diff --git a/backend/src/main/java/pdl/backend/Parameter.java b/backend/src/main/java/pdl/backend/Parameter.java new file mode 100644 index 0000000..7df01c5 --- /dev/null +++ b/backend/src/main/java/pdl/backend/Parameter.java @@ -0,0 +1,37 @@ +package pdl.backend; + +public class Parameter { + private final String name; + private final String displayName; + private final int min; + private final int max; + private final boolean mustBeOdd; + + public Parameter(String name, String displayName, int min, int max, boolean mustBeOdd) { + this.name = name; + this.displayName = displayName; + this.max = max; + this.min = min; + this.mustBeOdd = mustBeOdd; + } + + public String getName() { + return this.name; + } + + public String getDisplayName() { + return this.displayName; + } + + public int getMin() { + return this.min; + } + + public int getMax() { + return this.max; + } + + public boolean mustBeOdd() { + return this.mustBeOdd; + } +}