Search in sources :

Example 21 with Size

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

the class VideoMetadataDAO method createVideoMetadata.

/**
 * Creates and persists the video metadata.
 *
 * @param videoResource
 * @param size
 * @param filename
 * @return metadata
 */
VideoMetaImpl createVideoMetadata(RepositoryEntry repoEntry, long size, String fileName) {
    VideoMetaImpl videometa = new VideoMetaImpl();
    OLATResource videoResource = repoEntry.getOlatResource();
    videometa.setVideoResource(videoResource);
    String format = FilenameUtils.getExtension(fileName);
    videometa.setFormat(format);
    videometa.setCreationDate(new Date());
    videometa.setLastModified(new Date());
    Size resolution = videoManager.getVideoResolutionFromOLATResource(videoResource);
    videometa.setHeight(resolution.getHeight());
    videometa.setWidth(resolution.getWidth());
    videometa.setSize(size);
    videometa.setLength(repoEntry.getExpenditureOfWork());
    dbInstance.getCurrentEntityManager().persist(videometa);
    return videometa;
}
Also used : Size(org.olat.core.commons.services.image.Size) VideoMetaImpl(org.olat.modules.video.model.VideoMetaImpl) OLATResource(org.olat.resource.OLATResource) Date(java.util.Date)

Example 22 with Size

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

the class VideoTranscodingJob method updateStatus.

private boolean updateStatus(VideoTranscoding videoTranscoding, File transcodedFile, int exitCode) {
    VideoManager videoManager = CoreSpringFactory.getImpl(VideoManager.class);
    MovieService movieService = CoreSpringFactory.getImpl(MovieService.class);
    videoTranscoding = videoManager.getVideoTranscoding(videoTranscoding.getKey());
    Size videoSize = movieService.getSize(new LocalFileImpl(transcodedFile), VideoManagerImpl.FILETYPE_MP4);
    if (videoSize != null) {
        videoTranscoding.setWidth(videoSize.getWidth());
        videoTranscoding.setHeight(videoSize.getHeight());
    } else {
        videoTranscoding.setWidth(0);
        videoTranscoding.setHeight(0);
    }
    if (transcodedFile.exists()) {
        videoTranscoding.setSize(transcodedFile.length());
    } else {
        videoTranscoding.setSize(0);
    }
    if (exitCode == 0) {
        videoTranscoding.setStatus(VideoTranscoding.TRANSCODING_STATUS_DONE);
    } else {
        log.error("Exit code " + videoTranscoding + ":" + exitCode);
        videoTranscoding.setStatus(VideoTranscoding.TRANSCODING_STATUS_ERROR);
    }
    videoTranscoding = videoManager.updateVideoTranscoding(videoTranscoding);
    DBFactory.getInstance().commitAndCloseSession();
    return exitCode == 0;
}
Also used : MovieService(org.olat.core.commons.services.video.MovieService) Size(org.olat.core.commons.services.image.Size) LocalFileImpl(org.olat.core.util.vfs.LocalFileImpl) VideoManager(org.olat.modules.video.VideoManager)

Example 23 with Size

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

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)

Example 24 with Size

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

the class ImageHelperImpl method cropImage.

@Override
public boolean cropImage(File image, File cropedImage, Crop cropSelection) {
    try (ImageInputStream imageSrc = new FileImageInputStream(image)) {
        String extension = FileUtils.getFileSuffix(cropedImage.getName());
        SizeAndBufferedImage img = getImage(imageSrc, extension);
        if (img != null) {
            BufferedImage croppedImg = cropTo(img.getImage(), img.getSize(), cropSelection);
            Size size = new Size(cropSelection.getWidth(), cropSelection.getHeight(), false);
            return writeTo(croppedImg, cropedImage, size, extension);
        }
        return false;
    } catch (IOException e) {
        return false;
    } catch (CMMException e) {
        // if the image has wrong EXIF data
        return false;
    }
}
Also used : FileImageInputStream(javax.imageio.stream.FileImageInputStream) Size(org.olat.core.commons.services.image.Size) MemoryCacheImageInputStream(javax.imageio.stream.MemoryCacheImageInputStream) FileImageInputStream(javax.imageio.stream.FileImageInputStream) ImageInputStream(javax.imageio.stream.ImageInputStream) IOException(java.io.IOException) CMMException(java.awt.color.CMMException) BufferedImage(java.awt.image.BufferedImage)

Example 25 with Size

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

the class ImageHelperImpl method getImage.

private static SizeAndBufferedImage getImage(ImageInputStream stream, String suffix) {
    Iterator<ImageReader> iter = ImageIO.getImageReadersBySuffix(suffix);
    if (iter.hasNext()) {
        ImageReader reader = iter.next();
        try {
            reader.setInput(stream, true, true);
            int width = reader.getWidth(reader.getMinIndex());
            int height = reader.getHeight(reader.getMinIndex());
            Size size = new Size(width, height, false);
            SizeAndBufferedImage all = new SizeAndBufferedImage(size, null);
            int readerMinIndex = reader.getMinIndex();
            ImageReadParam param = reader.getDefaultReadParam();
            Iterator<ImageTypeSpecifier> imageTypes = reader.getImageTypes(0);
            while (imageTypes.hasNext()) {
                try {
                    ImageTypeSpecifier imageTypeSpecifier = imageTypes.next();
                    int bufferedImageType = imageTypeSpecifier.getBufferedImageType();
                    if (bufferedImageType == BufferedImage.TYPE_BYTE_GRAY) {
                        param.setDestinationType(imageTypeSpecifier);
                    }
                    all.setImage(reader.read(readerMinIndex, param));
                    return all;
                } catch (IllegalArgumentException e) {
                    log.warn(e.getMessage(), e);
                }
            }
        } catch (IOException e) {
            log.error(e.getMessage(), e);
        } finally {
            reader.dispose();
        }
    } else {
        log.error("No reader found for given format: " + suffix, null);
    }
    return null;
}
Also used : ImageReadParam(javax.imageio.ImageReadParam) Size(org.olat.core.commons.services.image.Size) IOException(java.io.IOException) ImageReader(javax.imageio.ImageReader) ImageTypeSpecifier(javax.imageio.ImageTypeSpecifier)

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