added all other functions (errors don't show up on screen). Still need to finish gaussenFilter
This commit is contained in:
1 parent
c058036459
commit
435f8510fe
1 file changed
+116
-25
@@ -105,32 +105,123 @@ public class ImageController {
|
|||||||
|
|
||||||
}
|
}
|
||||||
if (parameters.containsKey("algorithm")) {
|
if (parameters.containsKey("algorithm")) {
|
||||||
if (parameters.get("algorithm").equals("changeLuminosity") && parameters.containsKey("delta")) {
|
String algo = parameters.get("algorithm");
|
||||||
BufferedImage bufImg;
|
BufferedImage bufImg;
|
||||||
try {
|
try {
|
||||||
bufImg = ImageIO.read(new ByteArrayInputStream(image.get().getData()));
|
bufImg = ImageIO.read(new ByteArrayInputStream(image.get().getData()));
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
return new ResponseEntity<>("Image not readable",
|
return new ResponseEntity<>("Image not readable",
|
||||||
HttpStatus.INTERNAL_SERVER_ERROR);
|
HttpStatus.INTERNAL_SERVER_ERROR);
|
||||||
}
|
|
||||||
Planar<GrayU8> input = ConvertBufferedImage.convertFromPlanar(bufImg, null,
|
|
||||||
true, GrayU8.class);
|
|
||||||
ImageProcessing.changeLuminosity(input, Integer.parseInt(parameters.get("delta")));
|
|
||||||
bufImg = ConvertBufferedImage.convertTo_U8(input, null, true);
|
|
||||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
|
||||||
try {
|
|
||||||
ImageIO.write(bufImg, image.get().getMediaType().getSubtype(), baos);
|
|
||||||
|
|
||||||
} catch (IOException e) {
|
|
||||||
return new ResponseEntity<>("Image couldn't be converted",
|
|
||||||
HttpStatus.INTERNAL_SERVER_ERROR);
|
|
||||||
}
|
|
||||||
byte[] imageData = baos.toByteArray();
|
|
||||||
|
|
||||||
InputStream inputStream = new ByteArrayInputStream(imageData);
|
|
||||||
return ResponseEntity.ok().contentType(image.get().getMediaType())
|
|
||||||
.body(new InputStreamResource(inputStream));
|
|
||||||
}
|
}
|
||||||
|
Planar<GrayU8> input = ConvertBufferedImage.convertFromPlanar(bufImg, null,
|
||||||
|
true, GrayU8.class);
|
||||||
|
if (algo.equals("changeLuminosity")) {
|
||||||
|
if (parameters.containsKey("delta")
|
||||||
|
&& parameters.size() == 2) {
|
||||||
|
try {
|
||||||
|
int i = Integer.parseInt(parameters.get("delta"));
|
||||||
|
ImageProcessing.changeLuminosity(input, i);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
return new ResponseEntity<>("Parameter 'delta' should be an integer",
|
||||||
|
HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
"Algorithm 'changeLuminosity' requires one parameter 'delta'(integer)",
|
||||||
|
HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
|
} else if (algo.equals("histogram")) {
|
||||||
|
if (parameters.size() == 1) {
|
||||||
|
ImageProcessing.histogram(input);
|
||||||
|
} else {
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
"Algorithm 'histogram' requires no parameters",
|
||||||
|
HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
|
} else if (algo.equals("colorFilter")) {
|
||||||
|
if (parameters.containsKey("hue") && parameters.size() == 2) {
|
||||||
|
try {
|
||||||
|
int i = Integer.parseInt(parameters.get("hue"));
|
||||||
|
ImageProcessing.colorFilter(i, input);
|
||||||
|
// hue entre 0 et 360?
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
return new ResponseEntity<>("Parameter 'hue' should be an integer",
|
||||||
|
HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
"Algorithm 'colorFilter' requires one parameter 'hue'(integer)",
|
||||||
|
HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
|
} else if (algo.equals("meanFilter")) {
|
||||||
|
if (parameters.containsKey("size") && parameters.size() == 2) {
|
||||||
|
try {
|
||||||
|
int i = Integer.parseInt(parameters.get("size"));
|
||||||
|
if (i % 2 == 0) {
|
||||||
|
return new ResponseEntity<>("Parameter 'size' should be an odd positive integer",
|
||||||
|
HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
|
Planar<GrayU8> clone = input.clone();
|
||||||
|
ImageProcessing.meanFilter(clone, input, i);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
return new ResponseEntity<>("Parameter 'size' should be an odd positive integer",
|
||||||
|
HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
"Algorithm 'meanFilter' requires one parameter 'size'(odd positive integer)",
|
||||||
|
HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
|
} else if (algo.equals("gaussienFilter")) {
|
||||||
|
if (parameters.containsKey("size") && parameters.size() == 2) {
|
||||||
|
try {
|
||||||
|
int i = Integer.parseInt(parameters.get("size"));
|
||||||
|
if (i % 2 == 0) {
|
||||||
|
return new ResponseEntity<>("Parameter 'size' should be an odd positive integer",
|
||||||
|
HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
|
Planar<GrayU8> clone = input.clone();
|
||||||
|
ImageProcessing.gaussienFilter(clone, input, null);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
return new ResponseEntity<>("Parameter 'size' should be an odd positive integer",
|
||||||
|
HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
"Algorithm 'gaussienFilter' requires one parameter 'size'(odd positive integer)",
|
||||||
|
HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
|
} else if (algo.equals("contours")) {
|
||||||
|
if (parameters.size() == 1) {
|
||||||
|
Planar<GrayU8> clone = input.clone();
|
||||||
|
ImageProcessing.gradientImageSobel(clone, input);
|
||||||
|
} else {
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
"Algorithm 'contours' requires no parameters",
|
||||||
|
HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
"The requested algorithm '" + parameters.get("algorithm") + "' doesn't exist",
|
||||||
|
HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
|
bufImg = ConvertBufferedImage.convertTo_U8(input, null, true);
|
||||||
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
|
try {
|
||||||
|
ImageIO.write(bufImg, image.get().getMediaType().getSubtype(), baos);
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
return new ResponseEntity<>("Image couldn't be converted",
|
||||||
|
HttpStatus.INTERNAL_SERVER_ERROR);
|
||||||
|
}
|
||||||
|
byte[] imageData = baos.toByteArray();
|
||||||
|
|
||||||
|
InputStream inputStream = new ByteArrayInputStream(imageData);
|
||||||
|
return ResponseEntity.ok().contentType(image.get().getMediaType())
|
||||||
|
.body(new InputStreamResource(inputStream));
|
||||||
|
} else {
|
||||||
|
return new ResponseEntity<>("First parameter should be 'algorithm",
|
||||||
|
HttpStatus.BAD_REQUEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user