Crop manually selected portraits, too
This commit is contained in:
parent
5538c7c274
commit
56ca4d50de
|
@ -46,6 +46,26 @@ public abstract class AbstractPortraitAction {
|
||||||
return output;
|
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() {
|
protected void firePortraitChanged() {
|
||||||
EventBusHolder.BUS.post(new PortraitChangedEvent(model));
|
EventBusHolder.BUS.post(new PortraitChangedEvent(model));
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,7 +101,8 @@ public class SetPortraitAction extends AbstractPortraitAction {
|
||||||
private boolean processImageFile(String portraitId, String selectedFile) {
|
private boolean processImageFile(String portraitId, String selectedFile) {
|
||||||
try {
|
try {
|
||||||
BufferedImage original = ImageIO.read(new File(selectedFile));
|
BufferedImage original = ImageIO.read(new File(selectedFile));
|
||||||
BufferedImage portrait = convertToScaledJpg(original);
|
BufferedImage croppedImage = cropImage(original);
|
||||||
|
BufferedImage portrait = convertToScaledJpg(croppedImage);
|
||||||
boolean success = copyToCacheAsJpg(portraitId, portrait);
|
boolean success = copyToCacheAsJpg(portraitId, portrait);
|
||||||
if (!success) {
|
if (!success) {
|
||||||
LOG.debug("Available formats: {}", Arrays.toString(ImageIO.getWriterFormatNames()));
|
LOG.debug("Available formats: {}", Arrays.toString(ImageIO.getWriterFormatNames()));
|
||||||
|
|
|
@ -45,26 +45,6 @@ public class SetThumbAsPortraitAction extends AbstractPortraitAction {
|
||||||
source.setCursor(Cursor.DEFAULT);
|
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) {
|
private BufferedImage convertFxImageToAwt(Image img) {
|
||||||
return SwingFXUtils.fromFXImage(img, null);
|
return SwingFXUtils.fromFXImage(img, null);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue