From a593f138c57356b595dc22dbee244fb6012d8323 Mon Sep 17 00:00:00 2001 From: Steven Tracey Date: Fri, 23 Aug 2024 13:00:28 -0400 Subject: [PATCH] Added antialiasing option --- build.gradle | 2 +- .../java/tech/nevets/igformatter/GenerateRoute.java | 4 +++- src/main/java/tech/nevets/igformatter/Images.java | 12 +++++++----- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index beda1d5..5338156 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ plugins { } group = 'tech.nevets' -version = '1.1.0' +version = '1.1.1' repositories { mavenCentral() diff --git a/src/main/java/tech/nevets/igformatter/GenerateRoute.java b/src/main/java/tech/nevets/igformatter/GenerateRoute.java index cd40fd9..ac027e9 100644 --- a/src/main/java/tech/nevets/igformatter/GenerateRoute.java +++ b/src/main/java/tech/nevets/igformatter/GenerateRoute.java @@ -29,18 +29,20 @@ public class GenerateRoute implements Route { int width; int height; int minBorder; + boolean antiAliasing; try { color = req.queryParams("color"); width = Integer.parseInt(req.queryParams("width")); height = Integer.parseInt(req.queryParams("height")); minBorder = Integer.parseInt(req.queryParams("minBorder")); + antiAliasing = Boolean.parseBoolean(req.queryParams("antiAliasing")); } catch (final Exception e) { res.type("plain/text"); res.status(400); return "Error in sent parameters: " + e.getMessage(); } - BufferedImage finalImg = Images.renderImage(img, color, width, height, minBorder); + BufferedImage finalImg = Images.renderImage(img, color, width, height, minBorder, antiAliasing); if (finalImg == null) { res.type("text/plain"); res.status(400); diff --git a/src/main/java/tech/nevets/igformatter/Images.java b/src/main/java/tech/nevets/igformatter/Images.java index bb77a51..825d2dc 100644 --- a/src/main/java/tech/nevets/igformatter/Images.java +++ b/src/main/java/tech/nevets/igformatter/Images.java @@ -4,7 +4,7 @@ import java.awt.*; import java.awt.image.BufferedImage; public class Images { - public static BufferedImage renderImage(BufferedImage img, String color, int totalWidth, int totalHeight, int minBorder) { + public static BufferedImage renderImage(BufferedImage img, String color, int totalWidth, int totalHeight, int minBorder, boolean antiAliasing) { if (totalWidth > 8000 || totalHeight > 6000) { System.out.println("Input too large"); return null; @@ -37,17 +37,19 @@ public class Images { yPos = minBorder; } - g.drawImage(resizeImage(img, width, height), xPos, yPos, width, height, null); + g.drawImage(resizeImage(img, width, height, antiAliasing), xPos, yPos, width, height, null); g.dispose(); return image; } - private static BufferedImage resizeImage(BufferedImage rawImage, int width, int height) { + private static BufferedImage resizeImage(BufferedImage rawImage, int width, int height, boolean antiAliasing) { BufferedImage resizedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); Graphics2D g = resizedImage.createGraphics(); - g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); - g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + if (antiAliasing) { + g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); + g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + } g.drawImage(rawImage, 0, 0, width, height, null); g.dispose(); return resizedImage;