Crop manually selected portraits, too
This commit is contained in:
parent
5538c7c274
commit
56ca4d50de
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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()));
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue