From 65b433b1389b45138a2d8c97e4acbd1c80fdbfcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20Ha=C3=9Fel?= Date: Thu, 23 Feb 2023 10:05:45 +0100 Subject: [PATCH] preview with 50% alpha --- .../{ImageResizer.java => ImageHelper.java} | 18 +++++++++++++++++- .../de/ph87/kindermalen/tool/stamp/Stamp.java | 2 +- .../ph87/kindermalen/tool/stamp/StampTool.java | 16 ++++++++-------- 3 files changed, 26 insertions(+), 10 deletions(-) rename src/main/java/de/ph87/kindermalen/{ImageResizer.java => ImageHelper.java} (59%) diff --git a/src/main/java/de/ph87/kindermalen/ImageResizer.java b/src/main/java/de/ph87/kindermalen/ImageHelper.java similarity index 59% rename from src/main/java/de/ph87/kindermalen/ImageResizer.java rename to src/main/java/de/ph87/kindermalen/ImageHelper.java index 24e6fbe..8ea00a9 100644 --- a/src/main/java/de/ph87/kindermalen/ImageResizer.java +++ b/src/main/java/de/ph87/kindermalen/ImageHelper.java @@ -5,8 +5,24 @@ import com.mortennobel.imagescaling.ResampleOp; import java.awt.*; import java.awt.image.BufferedImage; +import java.awt.image.WritableRaster; -public class ImageResizer { +public class ImageHelper { + + public static BufferedImage COPY(final BufferedImage source) { + final BufferedImage copy = new BufferedImage(source.getWidth(), source.getHeight(), source.getType()); + source.copyData(copy.getRaster()); + return copy; + } + + public static void ALPHA(final BufferedImage image, final double alpha) { + final WritableRaster raster = image.getAlphaRaster(); + for (int y = 0; y < raster.getHeight(); y++) { + for (int x = 0; x < raster.getWidth(); x++) { + raster.setSample(x, y, 0, raster.getSample(x, y, 0) * alpha); + } + } + } public static BufferedImage RESIZE(final BufferedImage image, final int maxWidth, final int maxHeight) { final Point size = fitInsideBox(image, maxWidth, maxHeight); diff --git a/src/main/java/de/ph87/kindermalen/tool/stamp/Stamp.java b/src/main/java/de/ph87/kindermalen/tool/stamp/Stamp.java index 4887ce0..1f863e5 100644 --- a/src/main/java/de/ph87/kindermalen/tool/stamp/Stamp.java +++ b/src/main/java/de/ph87/kindermalen/tool/stamp/Stamp.java @@ -11,7 +11,7 @@ import java.io.IOException; import java.util.HashMap; import java.util.Map; -import static de.ph87.kindermalen.ImageResizer.RESIZE; +import static de.ph87.kindermalen.ImageHelper.RESIZE; @Slf4j @Getter diff --git a/src/main/java/de/ph87/kindermalen/tool/stamp/StampTool.java b/src/main/java/de/ph87/kindermalen/tool/stamp/StampTool.java index 5b24e1b..a3e3172 100644 --- a/src/main/java/de/ph87/kindermalen/tool/stamp/StampTool.java +++ b/src/main/java/de/ph87/kindermalen/tool/stamp/StampTool.java @@ -13,7 +13,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; -import static de.ph87.kindermalen.ImageResizer.RESIZE; +import static de.ph87.kindermalen.ImageHelper.*; import static de.ph87.kindermalen.tool.stamp.ListHelper.SYNC; @Slf4j @@ -36,6 +36,9 @@ public class StampTool extends Tool { private BufferedImage prepared; + @Getter + private BufferedImage preview; + public StampTool() { super("Stempel"); final List files = scan(STAMPS_DIR); @@ -86,9 +89,11 @@ public class StampTool extends Tool { if (this.stamp == null || stamp.getOriginal() == null) { return; } - this.prepared = RESIZE(stamp.getOriginal(), size, size); + prepared = RESIZE(stamp.getOriginal(), size, size); + preview = COPY(prepared); + ALPHA(preview, 0.5); + ALPHA(prepared, alpha); log.info("Stamp prepared: {}", stamp.getName()); - // TODO apply alpha } @Override @@ -110,9 +115,4 @@ public class StampTool extends Tool { destination.getGraphics().drawImage(prepared, point.intX() - prepared.getWidth() / 2, point.intY() - prepared.getHeight() / 2, null); } - @Override - public BufferedImage getPreview() { - return prepared; - } - }