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);
}
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);
}
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;
}
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();
}
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);
}
}
Aggregations