From 56ca4d50de4d909e9906d588b8b62a0f777f954e Mon Sep 17 00:00:00 2001 From: 0xb00bface <0xboobface@gmail.com> Date: Mon, 23 Aug 2021 15:05:43 +0200 Subject: [PATCH] Crop manually selected portraits, too --- .../ui/action/AbstractPortraitAction.java | 20 +++++++++++++++++++ .../ctbrec/ui/action/SetPortraitAction.java | 3 ++- .../ui/action/SetThumbAsPortraitAction.java | 20 ------------------- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/client/src/main/java/ctbrec/ui/action/AbstractPortraitAction.java b/client/src/main/java/ctbrec/ui/action/AbstractPortraitAction.java index b524a281..0ba64ba5 100644 --- a/client/src/main/java/ctbrec/ui/action/AbstractPortraitAction.java +++ b/client/src/main/java/ctbrec/ui/action/AbstractPortraitAction.java @@ -46,6 +46,26 @@ public abstract class AbstractPortraitAction { return output; } + protected BufferedImage cropImage(BufferedImage img) { + int w = img.getWidth(); + int h = img.getHeight(); + if (w > h) { + return cropSides(img); + } else { + return cropTopAndBottom(img); + } + } + + protected BufferedImage cropSides(BufferedImage img) { + int overlap = img.getWidth() - img.getHeight(); + return img.getSubimage(overlap / 2, 0, img.getHeight(), img.getHeight()); + } + + protected BufferedImage cropTopAndBottom(BufferedImage img) { + int overlap = img.getHeight() - img.getWidth(); + return img.getSubimage(0, overlap/2, img.getWidth(), img.getWidth()); + } + protected void firePortraitChanged() { EventBusHolder.BUS.post(new PortraitChangedEvent(model)); } diff --git a/client/src/main/java/ctbrec/ui/action/SetPortraitAction.java b/client/src/main/java/ctbrec/ui/action/SetPortraitAction.java index dce53769..8747ea46 100644 --- a/client/src/main/java/ctbrec/ui/action/SetPortraitAction.java +++ b/client/src/main/java/ctbrec/ui/action/SetPortraitAction.java @@ -101,7 +101,8 @@ public class SetPortraitAction extends AbstractPortraitAction { private boolean processImageFile(String portraitId, String selectedFile) { try { BufferedImage original = ImageIO.read(new File(selectedFile)); - BufferedImage portrait = convertToScaledJpg(original); + BufferedImage croppedImage = cropImage(original); + BufferedImage portrait = convertToScaledJpg(croppedImage); boolean success = copyToCacheAsJpg(portraitId, portrait); if (!success) { LOG.debug("Available formats: {}", Arrays.toString(ImageIO.getWriterFormatNames())); diff --git a/client/src/main/java/ctbrec/ui/action/SetThumbAsPortraitAction.java b/client/src/main/java/ctbrec/ui/action/SetThumbAsPortraitAction.java index ec936331..7b23686c 100644 --- a/client/src/main/java/ctbrec/ui/action/SetThumbAsPortraitAction.java +++ b/client/src/main/java/ctbrec/ui/action/SetThumbAsPortraitAction.java @@ -45,26 +45,6 @@ public class SetThumbAsPortraitAction extends AbstractPortraitAction { source.setCursor(Cursor.DEFAULT); } - private BufferedImage cropImage(BufferedImage img) { - int w = img.getWidth(); - int h = img.getHeight(); - if (w > h) { - return cropSides(img); - } else { - return cropTopAndBottom(img); - } - } - - private BufferedImage cropSides(BufferedImage img) { - int overlap = img.getWidth() - img.getHeight(); - return img.getSubimage(overlap / 2, 0, img.getHeight(), img.getHeight()); - } - - private BufferedImage cropTopAndBottom(BufferedImage img) { - int overlap = img.getHeight() - img.getWidth(); - return img.getSubimage(0, overlap/2, img.getWidth(), img.getWidth()); - } - private BufferedImage convertFxImageToAwt(Image img) { return SwingFXUtils.fromFXImage(img, null); }