From 47fb9737cb30b667c9a42261e69b1a9bdf54c458 Mon Sep 17 00:00:00 2001 From: Adrien Prokopowicz Date: Fri, 23 Feb 2018 03:06:43 +0100 Subject: [PATCH] * NEW: Added width and height parameters to the resize option. --- .../imageonmap/commands/maptool/NewCommand.java | 11 +++++++++-- .../imageonmap/image/ImageRendererExecutor.java | 12 ++++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java b/src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java index facae31..96ef7c5 100644 --- a/src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java +++ b/src/main/java/fr/moribus/imageonmap/commands/maptool/NewCommand.java @@ -42,6 +42,7 @@ public class NewCommand extends IoMCommand final Player player = playerSender(); boolean scaling = false; URL url; + int width = 0, height = 0; if(args.length < 1) throwInvalidArgument(I.t("You must give an URL to take the image from.")); @@ -57,11 +58,17 @@ public class NewCommand extends IoMCommand if(args.length >= 2) { - if(args[1].equals("resize")) scaling = true; + if(args[1].equals("resize")) { + scaling = true; + if(args.length >= 4) { + width = Integer.parseInt(args[2]); + height = Integer.parseInt(args[3]); + } + } } info(I.t("Rendering...")); - ImageRendererExecutor.Render(url, scaling, player.getUniqueId(), new WorkerCallback() + ImageRendererExecutor.Render(url, scaling, player.getUniqueId(), width, height, new WorkerCallback() { @Override public void finished(ImageMap result) diff --git a/src/main/java/fr/moribus/imageonmap/image/ImageRendererExecutor.java b/src/main/java/fr/moribus/imageonmap/image/ImageRendererExecutor.java index 390ccdd..d59b6fb 100644 --- a/src/main/java/fr/moribus/imageonmap/image/ImageRendererExecutor.java +++ b/src/main/java/fr/moribus/imageonmap/image/ImageRendererExecutor.java @@ -42,7 +42,7 @@ import java.util.concurrent.Future; @WorkerAttributes (name = "Image Renderer", queriesMainThread = true) public class ImageRendererExecutor extends Worker { - static public void Render(final URL url, final boolean scaling, final UUID playerUUID, WorkerCallback callback) + static public void Render(final URL url, final boolean scaling, final UUID playerUUID, final int width, final int height, WorkerCallback callback) { submitQuery(new WorkerRunnable() { @@ -65,11 +65,19 @@ public class ImageRendererExecutor extends Worker if (image == null) throw new IOException(I.t("The given URL is not a valid image")); - if (scaling) return RenderSingle(image, playerUUID); + if (scaling) return RenderScaled(image, playerUUID, width, height); else return RenderPoster(image, playerUUID); } }, callback); } + + static private ImageMap RenderScaled(final BufferedImage image, final UUID playerUUID, final int width, final int height) throws Throwable { + if(height <= 1 && width <= 1) { + return RenderSingle(image, playerUUID); + } + final BufferedImage finalImage = ResizeImage(image, ImageMap.WIDTH * width, ImageMap.HEIGHT * height); + return RenderPoster(finalImage, playerUUID); + } static private ImageMap RenderSingle(final BufferedImage image, final UUID playerUUID) throws Throwable {