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