diff --git a/src/main/java/org/olat/admin/layout/LogoMapper.java b/src/main/java/org/olat/admin/layout/LogoMapper.java index b4e47ecc2823a9f1a34d646cf088b220c0827964..e1b922f8003f7359433b201c6bfd5393d3c575e3 100644 --- a/src/main/java/org/olat/admin/layout/LogoMapper.java +++ b/src/main/java/org/olat/admin/layout/LogoMapper.java @@ -52,9 +52,9 @@ class LogoMapper implements Mapper { if(lastModified < logo.lastModified() || !scaledLogo.exists()) { ImageService imageService = CoreSpringFactory.getImpl(ImageService.class); File logo1x = new File(dir, "oo-logo@1x.png"); - imageService.scaleImage(logo, logo1x, 104, 50); + imageService.scaleImage(logo, "png", logo1x, 104, 50); File logo2x = new File(dir, "oo-logo@2x.png"); - imageService.scaleImage(logo, logo2x, 208, 50); + imageService.scaleImage(logo, "png", logo2x, 208, 50); } return new FileMediaResource(scaledLogo); } diff --git a/src/main/java/org/olat/core/commons/services/image/ImageHelperBean.java b/src/main/java/org/olat/core/commons/services/image/ImageHelperBean.java index c03d9101102e42206fe6348ce97f1ba9b83c38a6..f6878825002141976b84554ef86a37cabe89192f 100644 --- a/src/main/java/org/olat/core/commons/services/image/ImageHelperBean.java +++ b/src/main/java/org/olat/core/commons/services/image/ImageHelperBean.java @@ -54,11 +54,6 @@ public class ImageHelperBean implements ImageService { return imageHelperServiceProvider.cropImage(image, cropedImage, cropSelection); } - @Override - public Size scaleImage(File image, File scaledImage, int maxWidth, int maxHeight) { - return imageHelperServiceProvider.scaleImage(image, scaledImage, maxWidth, maxHeight); - } - @Override public Size scaleImage(File image, String extension, File scaledImage, int maxWidth, int maxHeight) { return imageHelperServiceProvider.scaleImage(image, extension, scaledImage, maxWidth, maxHeight); diff --git a/src/main/java/org/olat/core/commons/services/image/ImageHelperSPI.java b/src/main/java/org/olat/core/commons/services/image/ImageHelperSPI.java index d0cb769e599aaa88414c9f8f1e16111247829547..881774f35f3a7e74c9fa8a5248a95347332f0091 100644 --- a/src/main/java/org/olat/core/commons/services/image/ImageHelperSPI.java +++ b/src/main/java/org/olat/core/commons/services/image/ImageHelperSPI.java @@ -45,8 +45,6 @@ public interface ImageHelperSPI { public boolean cropImage(File image, File cropedImage, Crop cropSelection); - public Size scaleImage(File image, File scaledImage, int maxWidth, int maxHeight); - public Size scaleImage(File image, String extension, File scaledImage, int maxWidth, int maxHeight); public Size scaleImage(VFSLeaf image, VFSLeaf scaledImage, int maxWidth, int maxHeight, boolean fill); diff --git a/src/main/java/org/olat/core/commons/services/image/ImageService.java b/src/main/java/org/olat/core/commons/services/image/ImageService.java index cf14ab77fa1070e762876cd5420eea58d057b3f3..14e6831151b07ac512136cf025a54cc9df6c43c4 100644 --- a/src/main/java/org/olat/core/commons/services/image/ImageService.java +++ b/src/main/java/org/olat/core/commons/services/image/ImageService.java @@ -40,9 +40,7 @@ public interface ImageService { public Size getSize(VFSLeaf image, String suffix); public boolean cropImage(File image, File cropedImage, Crop cropSelection); - - public Size scaleImage(File image, File scaledImage, int maxWidth, int maxHeight); - + public Size scaleImage(File image, String extension, File scaledImage, int maxWidth, int maxHeight); public Size scaleImage(VFSLeaf image, VFSLeaf scaledImage, int maxWidth, int maxHeight, boolean fill); diff --git a/src/main/java/org/olat/core/commons/services/image/spi/ImageHelperImpl.java b/src/main/java/org/olat/core/commons/services/image/spi/ImageHelperImpl.java index 08fbfbac79cbbcba75751d3708a3cec8aca3a0c7..94ac8f8dbf58c20ed72446cb4618a3f469394ef9 100644 --- a/src/main/java/org/olat/core/commons/services/image/spi/ImageHelperImpl.java +++ b/src/main/java/org/olat/core/commons/services/image/spi/ImageHelperImpl.java @@ -286,21 +286,8 @@ public class ImageHelperImpl extends AbstractImageHelper { } /** - * @param image the image to scale - * @param scaledImaged the new scaled image - * @param maxWidth the maximum width of the new scaled image - * @param maxheight the maximum height of the new scaled image - * @return - */ - @Override - public Size scaleImage(File image, File scaledImage, int maxWidth, int maxHeight) { - String extension = FileUtils.getFileSuffix(image.getName()); - return scaleImage(image, extension, scaledImage, maxWidth, maxHeight); - } - - /** - * @param image the image to scale - * @param image extension if not given by the image file (optional) + * @param image The image to scale + * @param imageExt The extension if not given by the image file (optional) * @param scaledImaged the new scaled image * @param maxWidth the maximum width of the new scaled image * @param maxheight the maximum height of the new scaled image diff --git a/src/main/java/org/olat/core/commons/services/image/spi/ImageMagickHelper.java b/src/main/java/org/olat/core/commons/services/image/spi/ImageMagickHelper.java index b8e7a511e2db562da3fd25fc8775a48a0f91bb09..6657b645f336f2436658e4c48507f59547c08c84 100644 --- a/src/main/java/org/olat/core/commons/services/image/spi/ImageMagickHelper.java +++ b/src/main/java/org/olat/core/commons/services/image/spi/ImageMagickHelper.java @@ -88,11 +88,6 @@ public class ImageMagickHelper extends AbstractImageHelper { @Override public Size scaleImage(File image, String extension, File scaledImage, int maxWidth, int maxHeight) { - return scaleImage(image, scaledImage, maxWidth, maxHeight); - } - - @Override - public Size scaleImage(File image, File scaledImage, int maxWidth, int maxHeight) { FinalSize finalSize = generateThumbnail(image, scaledImage, false, maxWidth, maxHeight, false); if(finalSize != null) { return new Size(finalSize.getWidth(), finalSize.getHeight(), true); diff --git a/src/main/java/org/olat/upgrade/OLATUpgrade_8_4_0.java b/src/main/java/org/olat/upgrade/OLATUpgrade_8_4_0.java index 4d30fc598c7b663b8880b3a18aa60f9fbac66e46..e78d01dc1db894e0255fc11f99cc555186c88893 100644 --- a/src/main/java/org/olat/upgrade/OLATUpgrade_8_4_0.java +++ b/src/main/java/org/olat/upgrade/OLATUpgrade_8_4_0.java @@ -187,7 +187,7 @@ public class OLATUpgrade_8_4_0 extends OLATUpgrade { extension = "png"; } File pSmallFile = new File(portraitDir, "portrait_small" + "." + extension); - imageHelper.scaleImage(file, pSmallFile, DisplayPortraitManager.WIDTH_PORTRAIT_SMALL, DisplayPortraitManager.WIDTH_PORTRAIT_SMALL); + imageHelper.scaleImage(file, extension, pSmallFile, DisplayPortraitManager.WIDTH_PORTRAIT_SMALL, DisplayPortraitManager.WIDTH_PORTRAIT_SMALL); counter++; break; } diff --git a/src/main/java/org/olat/user/DisplayPortraitManager.java b/src/main/java/org/olat/user/DisplayPortraitManager.java index 452be1c5f3f3487040772cae7a7574a2002cc72c..e4c5f4e3c28568dc35c140655756bfc6b4cb51ac 100644 --- a/src/main/java/org/olat/user/DisplayPortraitManager.java +++ b/src/main/java/org/olat/user/DisplayPortraitManager.java @@ -146,7 +146,7 @@ public class DisplayPortraitManager extends BasicManager implements UserDataDele return null; } - public void setPortrait(File file, String username) { + public void setPortrait(File file, String filename, String username) { //first remove old ones File portraitDir = getPortraitDir(username); if(portraitDir != null) { @@ -160,14 +160,19 @@ public class DisplayPortraitManager extends BasicManager implements UserDataDele String extension = FileUtils.getFileSuffix(file.getName()); if(!StringHelper.containsNonWhitespace(extension)) { - extension = "png"; + if(StringHelper.containsNonWhitespace(filename)) { + extension = FileUtils.getFileSuffix(filename); + } + if(!StringHelper.containsNonWhitespace(extension)) { + extension = "png"; + } } File pBigFile = new File(portraitDir, DisplayPortraitManager.PORTRAIT_BIG_FILENAME + "." + extension); File pSmallFile = new File(portraitDir, DisplayPortraitManager.PORTRAIT_SMALL_FILENAME + "." + extension); ImageService imageHelper = CoreSpringFactory.getImpl(ImageService.class); - Size size = imageHelper.scaleImage(file, pBigFile, DisplayPortraitManager.WIDTH_PORTRAIT_BIG, DisplayPortraitManager.WIDTH_PORTRAIT_BIG); + Size size = imageHelper.scaleImage(file, extension, pBigFile, DisplayPortraitManager.WIDTH_PORTRAIT_BIG, DisplayPortraitManager.WIDTH_PORTRAIT_BIG); if(size != null){ - size = imageHelper.scaleImage(file, pSmallFile, DisplayPortraitManager.WIDTH_PORTRAIT_SMALL, DisplayPortraitManager.WIDTH_PORTRAIT_SMALL); + size = imageHelper.scaleImage(file, extension, pSmallFile, DisplayPortraitManager.WIDTH_PORTRAIT_SMALL, DisplayPortraitManager.WIDTH_PORTRAIT_SMALL); } } diff --git a/src/main/java/org/olat/user/ProfileFormController.java b/src/main/java/org/olat/user/ProfileFormController.java index 03cb6447506b2f4853d9137e183aea0451289303..31193b2b563f1b176d08b77ff0ce9e33ba13c0ef 100644 --- a/src/main/java/org/olat/user/ProfileFormController.java +++ b/src/main/java/org/olat/user/ProfileFormController.java @@ -395,8 +395,9 @@ public class ProfileFormController extends FormBasicController { } File uploadedImage = portraitUpload.getUploadFile(); + String uploadedFilename = portraitUpload.getUploadFileName(); if(uploadedImage != null) { - dps.setPortrait(uploadedImage, identityToModify.getName()); + dps.setPortrait(uploadedImage, uploadedFilename, identityToModify.getName()); } // Store the "about me" text. diff --git a/src/main/java/org/olat/user/restapi/UserWebService.java b/src/main/java/org/olat/user/restapi/UserWebService.java index 479a0c37d3c489ed5b9afdd186a99ecaeca53d76..11577958153ebbdb986e877e77cf3ce4a717a889 100644 --- a/src/main/java/org/olat/user/restapi/UserWebService.java +++ b/src/main/java/org/olat/user/restapi/UserWebService.java @@ -579,7 +579,8 @@ public class UserWebService { } partsReader = new MultipartReader(request); File tmpFile = partsReader.getFile(); - DisplayPortraitManager.getInstance().setPortrait(tmpFile, identity.getName()); + String filename = partsReader.getFilename(); + DisplayPortraitManager.getInstance().setPortrait(tmpFile, filename, identity.getName()); return Response.ok().build(); } catch (Throwable e) { throw new WebApplicationException(e);