diff --git a/src/main/java/org/olat/core/util/image/spi/ImageHelperImpl.java b/src/main/java/org/olat/core/util/image/spi/ImageHelperImpl.java index b38747605bf2b8bf4ed6eb9a7878d3d107a511bf..20faf07b3f98fcee7c6a60866929480db0c8a34b 100644 --- a/src/main/java/org/olat/core/util/image/spi/ImageHelperImpl.java +++ b/src/main/java/org/olat/core/util/image/spi/ImageHelperImpl.java @@ -377,29 +377,32 @@ public class ImageHelperImpl implements ImageHelperSPI { ImageReadParam param = reader.getDefaultReadParam(); Iterator<ImageTypeSpecifier> imageTypes = reader.getImageTypes(0); while (imageTypes.hasNext()) { - ImageTypeSpecifier imageTypeSpecifier = imageTypes.next(); - int bufferedImageType = imageTypeSpecifier.getBufferedImageType(); - if (bufferedImageType == BufferedImage.TYPE_BYTE_GRAY) { - param.setDestinationType(imageTypeSpecifier); - break; - } - } - - double memoryKB = (width * height * 4) / 1024d; - if (memoryKB > 2000) {// check limit at 20MB - double free = Runtime.getRuntime().freeMemory() / 1024d; - if (free > memoryKB) { - all.setImage(reader.read(readerMinIndex, param)); - } else { - // make sub sampling to save memory - int ratio = (int) Math.round(Math.sqrt(memoryKB / free)); - param.setSourceSubsampling(ratio, ratio, 0, 0); - all.setImage(reader.read(readerMinIndex, param)); + try { + ImageTypeSpecifier imageTypeSpecifier = imageTypes.next(); + int bufferedImageType = imageTypeSpecifier.getBufferedImageType(); + if (bufferedImageType == BufferedImage.TYPE_BYTE_GRAY) { + param.setDestinationType(imageTypeSpecifier); + } + + double memoryKB = (width * height * 4) / 1024d; + if (memoryKB > 2000) {// check limit at 20MB + double free = Runtime.getRuntime().freeMemory() / 1024d; + if (free > memoryKB) { + all.setImage(reader.read(readerMinIndex, param)); + } else { + // make sub sampling to save memory + int ratio = (int) Math.round(Math.sqrt(memoryKB / free)); + param.setSourceSubsampling(ratio, ratio, 0, 0); + all.setImage(reader.read(readerMinIndex, param)); + } + } else { + all.setImage(reader.read(readerMinIndex, param)); + } + return all; + } catch (IllegalArgumentException e) { + log.warn(e.getMessage(), e); } - } else { - all.setImage(reader.read(readerMinIndex, param)); - } - return all; + } } catch (IOException e) { log.error(e.getMessage(), e); } finally { diff --git a/src/main/java/org/olat/repository/controllers/RepositoryEditDescriptionController.java b/src/main/java/org/olat/repository/controllers/RepositoryEditDescriptionController.java index 7a9cfa1e2324ae59b209b12dce43319d0a31a6ba..2cff57b525444b32825c244399c43af98a626dfc 100644 --- a/src/main/java/org/olat/repository/controllers/RepositoryEditDescriptionController.java +++ b/src/main/java/org/olat/repository/controllers/RepositoryEditDescriptionController.java @@ -324,7 +324,8 @@ public class RepositoryEditDescriptionController extends FormBasicController { } else if (source == fileUpload) { if (fileUpload.isUploadSuccess()) { File uploadedFile = fileUpload.getUploadFile(); - imageEl.setMediaResource(new NamedFileMediaResource(uploadedFile, fileUpload.getName(), "", false)); + String filename = fileUpload.getUploadFileName(); + imageEl.setMediaResource(new NamedFileMediaResource(uploadedFile, filename, "", false)); imageEl.setMaxWithAndHeightToFitWithin(400, 200); imageEl.setVisible(true); imageEl.getComponent().setDirty(true);