Search in sources :

Example 16 with Size

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

the class HotspotChoiceScoreController method updateBackground.

protected void updateBackground() {
    File backgroundImage = null;
    if (StringHelper.containsNonWhitespace(itemBuilder.getBackground())) {
        File itemDirectory = itemFile.getParentFile();
        Path backgroundPath = itemDirectory.toPath().resolve(itemBuilder.getBackground());
        if (Files.exists(backgroundPath)) {
            backgroundImage = backgroundPath.toFile();
        }
    }
    if (backgroundImage != null) {
        String filename = backgroundImage.getName();
        Size size = imageService.getSize(new LocalFileImpl(backgroundImage), null);
        scoreCont.contextPut("filename", filename);
        if (size != null) {
            if (size.getHeight() > 0) {
                scoreCont.contextPut("height", Integer.toString(size.getHeight()));
            } else {
                scoreCont.contextRemove("height");
            }
            if (size.getWidth() > 0) {
                scoreCont.contextPut("width", Integer.toString(size.getWidth()));
            } else {
                scoreCont.contextRemove("width");
            }
        }
    } else {
        scoreCont.contextRemove("filename");
    }
    List<HotspotWrapper> choiceWrappers = new ArrayList<>();
    List<HotspotChoice> choices = itemBuilder.getHotspotChoices();
    for (int i = 0; i < choices.size(); i++) {
        HotspotChoice choice = choices.get(i);
        choiceWrappers.add(new HotspotWrapper(choice, itemBuilder));
    }
    scoreCont.contextPut("hotspots", choiceWrappers);
}
Also used : Path(java.nio.file.Path) Size(org.olat.core.commons.services.image.Size) HotspotChoice(uk.ac.ed.ph.jqtiplus.node.item.interaction.graphic.HotspotChoice) ArrayList(java.util.ArrayList) LocalFileImpl(org.olat.core.util.vfs.LocalFileImpl) File(java.io.File)

Example 17 with Size

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

the class FeedMediaDispatcher method deliverFile.

/**
 * Dispatch and deliver the requested file given in the path.
 *
 * @param request
 * @param response
 * @param feed
 * @param path
 */
private void deliverFile(HttpServletRequest request, HttpServletResponse response, OLATResourceable feed, Path path) {
    // OLAT-5243 related: deliverFile can last arbitrary long, which can cause the open db connection to timeout and cause errors,
    // hence we need to do an intermediateCommit here
    DBFactory.getInstance().intermediateCommit();
    // Create the resource to be delivered
    MediaResource resource = null;
    FeedManager manager = FeedManager.getInstance();
    if (path.isFeedType()) {
        // Only create feed if modified. Send not modified response else.
        Identity identity = getIdentity(path.getIdentityKey());
        long sinceModifiedMillis = request.getDateHeader("If-Modified-Since");
        Feed feedLight = manager.loadFeed(feed);
        long lastModifiedMillis = -1;
        if (feedLight != null) {
            lastModifiedMillis = feedLight.getLastModified().getTime();
        }
        if (sinceModifiedMillis >= (lastModifiedMillis / 1000L) * 1000L) {
            // Send not modified response
            response.setDateHeader("last-modified", lastModifiedMillis);
            try {
                response.sendError(HttpServletResponse.SC_NOT_MODIFIED);
                return;
            } catch (IOException e) {
                // Send not modified failed
                log.error("Send not modified failed", e);
                return;
            }
        } else {
            resource = manager.createFeedFile(feed, identity, path.getCourseId(), path.getNodeId());
        }
    } else if (path.isItemType()) {
        resource = manager.createItemMediaFile(feed, path.getItemId(), path.getItemFileName());
    } else if (path.isIconType()) {
        Size thumbnailSize = null;
        String thumbnail = request.getParameter("thumbnail");
        if (StringHelper.containsNonWhitespace(thumbnail)) {
            thumbnailSize = Size.parseString(thumbnail);
        }
        VFSLeaf resourceFile = manager.createFeedMediaFile(feed, path.getIconFileName(), thumbnailSize);
        if (resourceFile != null) {
            resource = new VFSMediaResource(resourceFile);
        }
    }
    // Eventually deliver the requested resource
    ServletUtil.serveResource(request, response, resource);
}
Also used : VFSLeaf(org.olat.core.util.vfs.VFSLeaf) FeedManager(org.olat.modules.webFeed.manager.FeedManager) Size(org.olat.core.commons.services.image.Size) MediaResource(org.olat.core.gui.media.MediaResource) VFSMediaResource(org.olat.core.util.vfs.VFSMediaResource) IOException(java.io.IOException) Identity(org.olat.core.id.Identity) Feed(org.olat.modules.webFeed.Feed) VFSMediaResource(org.olat.core.util.vfs.VFSMediaResource)

Example 18 with Size

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

the class RepositoryManager method setImage.

public boolean setImage(VFSLeaf newImageFile, RepositoryEntry re) {
    VFSLeaf currentImage = getImage(re);
    if (currentImage != null) {
        if (currentImage instanceof MetaTagged) {
            MetaInfo info = ((MetaTagged) currentImage).getMetaInfo();
            if (info != null) {
                info.clearThumbnails();
            }
        }
        currentImage.delete();
    }
    if (newImageFile == null || !newImageFile.exists() || newImageFile.getSize() <= 0) {
        return false;
    }
    String targetExtension = ".png";
    String extension = FileUtils.getFileSuffix(newImageFile.getName());
    if ("jpg".equalsIgnoreCase(extension) || "jpeg".equalsIgnoreCase(extension)) {
        targetExtension = ".jpg";
    }
    VFSContainer repositoryHome = new LocalFolderImpl(new File(FolderConfig.getCanonicalRepositoryHome()));
    VFSLeaf repoImage = repositoryHome.createChildLeaf(re.getResourceableId() + targetExtension);
    if (targetExtension.equals(".png") || targetExtension.equals(".jpg")) {
        Size newImageSize = imageHelper.getSize(newImageFile, extension);
        if (newImageSize != null && newImageSize.getWidth() <= PICTURE_WIDTH && newImageSize.getHeight() <= PICTURE_HEIGHT) {
            boolean success = VFSManager.copyContent(newImageFile, repoImage);
            return success;
        }
    }
    Size size = imageHelper.scaleImage(newImageFile, repoImage, PICTURE_WIDTH, PICTURE_WIDTH, false);
    return size != null;
}
Also used : VFSLeaf(org.olat.core.util.vfs.VFSLeaf) Size(org.olat.core.commons.services.image.Size) VFSContainer(org.olat.core.util.vfs.VFSContainer) MetaTagged(org.olat.core.commons.modules.bc.meta.tagged.MetaTagged) MetaInfo(org.olat.core.commons.modules.bc.meta.MetaInfo) File(java.io.File) LocalFolderImpl(org.olat.core.util.vfs.LocalFolderImpl)

Example 19 with Size

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

the class VideoResourceEditController method doReplaceFileAndUpdateMetadata.

private int doReplaceFileAndUpdateMetadata() {
    VFSLeaf video = (VFSLeaf) vfsContainer.resolve(VIDEO_RESOURCE);
    File uploadFile = uploadFileEl.getUploadFile();
    // VideoMetadata videoMetadata = videoManager.getMetaDataFromOLATResource(videoResource);
    VideoMeta meta = videoManager.getVideoMetadata(videoResource);
    if (uploadFileEl.getUploadSize() > 0 && uploadFile.exists()) {
        video.delete();
        VFSLeaf uploadVideo = vfsContainer.createChildLeaf(VIDEO_RESOURCE);
        VFSManager.copyContent(uploadFile, uploadVideo);
        // update video dimensions
        Size dimensions = movieService.getSize(uploadVideo, VideoManagerImpl.FILETYPE_MP4);
        // update video duration
        long duration = movieService.getDuration(uploadVideo, VideoTranscoding.FORMAT_MP4);
        // exchange poster
        videoManager.exchangePoster(videoResource);
        if (duration != -1) {
            String length = Formatter.formatTimecode(duration);
            entry.setExpenditureOfWork(length);
            meta.setSize(uploadFile.length());
            meta.setWidth(dimensions.getWidth());
            meta.setHeight(dimensions.getHeight());
            meta.setFormat(FilenameUtils.getExtension(uploadVideo.getName()));
            meta.setLength(length);
        }
    }
    return meta.getHeight();
}
Also used : VFSLeaf(org.olat.core.util.vfs.VFSLeaf) VideoMeta(org.olat.modules.video.VideoMeta) Size(org.olat.core.commons.services.image.Size) File(java.io.File)

Example 20 with Size

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

the class VideoManagerImpl method updateVideoMetadata.

@Override
public void updateVideoMetadata(OLATResource videoResource, VFSLeaf uploadVideo) {
    VideoMeta meta = getVideoMetadata(videoResource);
    Size dimensions = movieService.getSize(uploadVideo, VideoManagerImpl.FILETYPE_MP4);
    // update video duration
    long duration = movieService.getDuration(uploadVideo, VideoTranscoding.FORMAT_MP4);
    if (duration != -1) {
        String length = Formatter.formatTimecode(duration);
        meta.setSize(uploadVideo.getSize());
        meta.setWidth(dimensions.getWidth());
        meta.setHeight(dimensions.getHeight());
        meta.setFormat(FilenameUtils.getExtension(uploadVideo.getName()));
        meta.setLength(length);
    }
}
Also used : VideoMeta(org.olat.modules.video.VideoMeta) Size(org.olat.core.commons.services.image.Size)

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