Search in sources :

Example 51 with Size

use of org.olat.core.commons.services.image.Size in project OpenOLAT by OpenOLAT.

the class DisplayPortraitManager method setImage.

private void setImage(File file, String filename, String username, String prefix, String masterImagePrefix, String largeImagePrefix, String smallImagePrefix, int maxBigWidth, int maxSmallWidth) {
    File directory = getPortraitDir(username);
    if (directory != null) {
        for (File currentImage : directory.listFiles()) {
            if (currentImage.equals(file)) {
                continue;
            } else if (currentImage.getName().startsWith(prefix)) {
                currentImage.delete();
            }
        }
    }
    String extension = FileUtils.getFileSuffix(file.getName());
    if (!StringHelper.containsNonWhitespace(extension)) {
        if (StringHelper.containsNonWhitespace(filename)) {
            extension = FileUtils.getFileSuffix(filename);
        }
        if (!StringHelper.containsNonWhitespace(extension)) {
            extension = "png";
        }
    }
    try {
        File masterFile = new File(directory, masterImagePrefix + "." + extension);
        Files.copy(file.toPath(), masterFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
    } catch (IOException e) {
        log.error("", e);
    }
    File bigFile = new File(directory, largeImagePrefix + "." + extension);
    File smallFile = new File(directory, smallImagePrefix + "." + extension);
    ImageService imageHelper = CoreSpringFactory.getImpl(ImageService.class);
    Size size = imageHelper.scaleImage(file, extension, bigFile, maxBigWidth, HEIGHT_BIG, false);
    if (size != null) {
        size = imageHelper.scaleImage(file, extension, smallFile, maxSmallWidth, HEIGHT_SMALL, false);
    }
}
Also used : Size(org.olat.core.commons.services.image.Size) IOException(java.io.IOException) File(java.io.File) ImageService(org.olat.core.commons.services.image.ImageService)

Example 52 with Size

use of org.olat.core.commons.services.image.Size in project OpenOLAT by OpenOLAT.

the class AbstractImageHelper method getImageSizeFallback.

private Size getImageSizeFallback(VFSLeaf media) {
    InputStream fileStream = null;
    BufferedImage imageSrc = null;
    try {
        fileStream = media.getInputStream();
        if (fileStream != null) {
            imageSrc = ImageIO.read(fileStream);
            if (imageSrc == null) {
                // happens with faulty Java implementation, e.g. on MacOSX
                return null;
            }
            double realWidth = imageSrc.getWidth();
            double realHeight = imageSrc.getHeight();
            return new Size((int) realWidth, (int) realHeight, 0, 0, false);
        } else {
            return null;
        }
    } catch (IOException e) {
        // log error, don't do anything else
        log.error("Problem while setting image size to fit for resource::" + media, e);
        return null;
    } finally {
        IOUtils.closeQuietly(fileStream);
        if (imageSrc != null) {
            imageSrc.flush();
        }
    }
}
Also used : FileInputStream(java.io.FileInputStream) ImageInputStream(javax.imageio.stream.ImageInputStream) MemoryCacheImageInputStream(javax.imageio.stream.MemoryCacheImageInputStream) InputStream(java.io.InputStream) Size(org.olat.core.commons.services.image.Size) IOException(java.io.IOException) BufferedImage(java.awt.image.BufferedImage)

Example 53 with Size

use of org.olat.core.commons.services.image.Size in project OpenOLAT by OpenOLAT.

the class AbstractImageHelper method getImageSize.

private Size getImageSize(File media, String suffix) {
    Size result = null;
    Iterator<ImageReader> iter = ImageIO.getImageReadersBySuffix(suffix);
    if (iter.hasNext()) {
        ImageReader reader = iter.next();
        try (InputStream mediaStream = new FileInputStream(media);
            ImageInputStream stream = new MemoryCacheImageInputStream(mediaStream)) {
            reader.setInput(stream);
            int readerMinIndex = reader.getMinIndex();
            int width = reader.getWidth(readerMinIndex);
            int height = reader.getHeight(readerMinIndex);
            result = new Size(width, height, 0, 0, false);
        } catch (IOException e) {
            log.error(e.getMessage());
        } finally {
            reader.dispose();
        }
    } else {
        log.error("No reader found for given format: " + suffix);
    }
    return result;
}
Also used : Size(org.olat.core.commons.services.image.Size) FileInputStream(java.io.FileInputStream) ImageInputStream(javax.imageio.stream.ImageInputStream) MemoryCacheImageInputStream(javax.imageio.stream.MemoryCacheImageInputStream) InputStream(java.io.InputStream) ImageInputStream(javax.imageio.stream.ImageInputStream) MemoryCacheImageInputStream(javax.imageio.stream.MemoryCacheImageInputStream) MemoryCacheImageInputStream(javax.imageio.stream.MemoryCacheImageInputStream) IOException(java.io.IOException) ImageReader(javax.imageio.ImageReader) FileInputStream(java.io.FileInputStream)

Example 54 with Size

use of org.olat.core.commons.services.image.Size in project OpenOLAT by OpenOLAT.

the class AbstractImageHelper method getImageSize.

private Size getImageSize(VFSLeaf media, String suffix) {
    Size result = null;
    Iterator<ImageReader> iter = ImageIO.getImageReadersBySuffix(suffix);
    if (iter.hasNext()) {
        ImageInputStream stream = null;
        InputStream mediaStream = null;
        ImageReader reader = iter.next();
        try {
            mediaStream = media.getInputStream();
            if (mediaStream != null) {
                stream = new MemoryCacheImageInputStream(mediaStream);
                reader.setInput(stream);
                int readerMinIndex = reader.getMinIndex();
                int width = reader.getWidth(readerMinIndex);
                int height = reader.getHeight(readerMinIndex);
                result = new Size(width, height, 0, 0, false);
            }
        } catch (IOException e) {
            log.error(e.getMessage());
        } finally {
            IOUtils.closeQuietly(stream);
            IOUtils.closeQuietly(mediaStream);
            reader.dispose();
        }
    } else {
        log.error("No reader found for given format: " + suffix);
    }
    return result;
}
Also used : Size(org.olat.core.commons.services.image.Size) FileInputStream(java.io.FileInputStream) ImageInputStream(javax.imageio.stream.ImageInputStream) MemoryCacheImageInputStream(javax.imageio.stream.MemoryCacheImageInputStream) InputStream(java.io.InputStream) ImageInputStream(javax.imageio.stream.ImageInputStream) MemoryCacheImageInputStream(javax.imageio.stream.MemoryCacheImageInputStream) MemoryCacheImageInputStream(javax.imageio.stream.MemoryCacheImageInputStream) IOException(java.io.IOException) ImageReader(javax.imageio.ImageReader)

Example 55 with Size

use of org.olat.core.commons.services.image.Size in project OpenOLAT by OpenOLAT.

the class ImageHelperImpl method thumbnailPDF.

@Override
public Size thumbnailPDF(VFSLeaf pdfFile, VFSLeaf thumbnailFile, int maxWidth, int maxHeight) {
    InputStream in = null;
    PDDocument document = null;
    try {
        WorkThreadInformations.setInfoFiles(null, pdfFile);
        WorkThreadInformations.set("Generate thumbnail VFSLeaf=" + pdfFile);
        in = pdfFile.getInputStream();
        document = PDDocument.load(in);
        if (document.isEncrypted()) {
            try {
                document.decrypt("");
            } catch (Exception e) {
                log.info("PDF document is encrypted: " + pdfFile);
                throw new CannotGenerateThumbnailException("PDF document is encrypted: " + pdfFile);
            }
        }
        List pages = document.getDocumentCatalog().getAllPages();
        PDPage page = (PDPage) pages.get(0);
        BufferedImage image = page.convertToImage(BufferedImage.TYPE_INT_BGR, 72);
        Size size = scaleImage(image, thumbnailFile, maxWidth, maxHeight);
        if (size != null) {
            return size;
        }
        return null;
    } catch (CannotGenerateThumbnailException e) {
        return null;
    } catch (Exception e) {
        log.warn("Unable to create image from pdf file.", e);
        return null;
    } finally {
        WorkThreadInformations.unset();
        FileUtils.closeSafely(in);
        if (document != null) {
            try {
                document.close();
            } catch (IOException e) {
            // only a try, fail silently
            }
        }
    }
}
Also used : CannotGenerateThumbnailException(org.olat.core.commons.services.thumbnail.CannotGenerateThumbnailException) PDPage(org.apache.pdfbox.pdmodel.PDPage) MemoryCacheImageInputStream(javax.imageio.stream.MemoryCacheImageInputStream) FileInputStream(java.io.FileInputStream) FileImageInputStream(javax.imageio.stream.FileImageInputStream) ImageInputStream(javax.imageio.stream.ImageInputStream) InputStream(java.io.InputStream) Size(org.olat.core.commons.services.image.Size) PDDocument(org.apache.pdfbox.pdmodel.PDDocument) List(java.util.List) IOException(java.io.IOException) CMMException(java.awt.color.CMMException) CannotGenerateThumbnailException(org.olat.core.commons.services.thumbnail.CannotGenerateThumbnailException) IOException(java.io.IOException) BufferedImage(java.awt.image.BufferedImage)

Aggregations

Size (org.olat.core.commons.services.image.Size)76 File (java.io.File)24 IOException (java.io.IOException)22 LocalFileImpl (org.olat.core.util.vfs.LocalFileImpl)22 VFSLeaf (org.olat.core.util.vfs.VFSLeaf)20 VFSContainer (org.olat.core.util.vfs.VFSContainer)14 FileInputStream (java.io.FileInputStream)12 InputStream (java.io.InputStream)12 ImageInputStream (javax.imageio.stream.ImageInputStream)12 MemoryCacheImageInputStream (javax.imageio.stream.MemoryCacheImageInputStream)12 BufferedImage (java.awt.image.BufferedImage)10 ImageReader (javax.imageio.ImageReader)8 CannotGenerateThumbnailException (org.olat.core.commons.services.thumbnail.CannotGenerateThumbnailException)8 FinalSize (org.olat.core.commons.services.thumbnail.FinalSize)7 CMMException (java.awt.color.CMMException)6 ArrayList (java.util.ArrayList)6 VideoMeta (org.olat.modules.video.VideoMeta)5 RandomAccessFile (java.io.RandomAccessFile)4 Date (java.util.Date)4 List (java.util.List)4