Skip to content

Commit 89e9aef

Browse files
vins01-4scienceMicheleboychuk
authored andcommitted
Merged in task/dspace-cris-2024_02_x/DSC-2830 (pull request DSpace#5751)
DSC-2830 Approved-by: Mykhaylo Boychuk
2 parents 742b7fc + 77748ac commit 89e9aef

5 files changed

Lines changed: 261 additions & 102 deletions

File tree

dspace-api/src/main/java/org/dspace/app/mediafilter/BrandedPreviewJPEGFilter.java

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@
77
*/
88
package org.dspace.app.mediafilter;
99

10-
import java.awt.image.BufferedImage;
1110
import java.io.InputStream;
12-
import javax.imageio.ImageIO;
1311

1412
import org.dspace.content.Item;
1513
import org.dspace.services.ConfigurationService;
@@ -55,25 +53,20 @@ public String getDescription() {
5553
@Override
5654
public InputStream getDestinationStream(Item currentItem, InputStream source, boolean verbose)
5755
throws Exception {
58-
// read in bitstream's image
59-
BufferedImage buf = ImageIO.read(source);
60-
6156
// get config params
6257
ConfigurationService configurationService
6358
= DSpaceServicesFactory.getInstance().getConfigurationService();
64-
float xmax = (float) configurationService
65-
.getIntProperty("webui.preview.maxwidth");
66-
float ymax = (float) configurationService
67-
.getIntProperty("webui.preview.maxheight");
68-
boolean blurring = (boolean) configurationService
69-
.getBooleanProperty("webui.preview.blurring");
70-
boolean hqscaling = (boolean) configurationService
71-
.getBooleanProperty("webui.preview.hqscaling");
59+
int xmax = configurationService.getIntProperty("webui.preview.maxwidth");
60+
int ymax = configurationService.getIntProperty("webui.preview.maxheight");
61+
boolean blurring = configurationService.getBooleanProperty("webui.preview.blurring");
62+
boolean hqscaling = configurationService.getBooleanProperty("webui.preview.hqscaling");
7263
int brandHeight = configurationService.getIntProperty("webui.preview.brand.height");
7364
String brandFont = configurationService.getProperty("webui.preview.brand.font");
7465
int brandFontPoint = configurationService.getIntProperty("webui.preview.brand.fontpoint");
7566

76-
return getThumbDim(currentItem, buf, verbose, xmax, ymax, blurring, hqscaling, brandHeight, brandFontPoint,
77-
brandFont);
67+
JPEGFilter jpegFilter = new JPEGFilter();
68+
return jpegFilter.getThumb(
69+
currentItem, source, verbose, xmax, ymax, blurring, hqscaling, brandHeight, brandFontPoint, brandFont
70+
);
7871
}
7972
}

dspace-api/src/main/java/org/dspace/app/mediafilter/ImageMagickThumbnailFilter.java

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import java.util.regex.PatternSyntaxException;
1616

1717
import org.apache.pdfbox.Loader;
18+
import org.apache.pdfbox.pdmodel.PDDocument;
1819
import org.apache.pdfbox.pdmodel.PDPage;
1920
import org.apache.pdfbox.pdmodel.common.PDRectangle;
2021
import org.dspace.content.Bitstream;
@@ -85,23 +86,20 @@ public String getDescription() {
8586

8687
public File inputStreamToTempFile(InputStream source, String prefix, String suffix) throws IOException {
8788
File f = File.createTempFile(prefix, suffix);
88-
f.deleteOnExit();
89-
FileOutputStream fos = new FileOutputStream(f);
90-
91-
byte[] buffer = new byte[1024];
92-
int len = source.read(buffer);
93-
while (len != -1) {
94-
fos.write(buffer, 0, len);
95-
len = source.read(buffer);
89+
try (FileOutputStream fos = new FileOutputStream(f)) {
90+
byte[] buffer = new byte[8192];
91+
int len = source.read(buffer);
92+
while (len != -1) {
93+
fos.write(buffer, 0, len);
94+
len = source.read(buffer);
95+
}
9696
}
97-
fos.close();
9897
return f;
9998
}
10099

101100
public File getThumbnailFile(File f, boolean verbose)
102101
throws IOException, InterruptedException, IM4JavaException {
103102
File f2 = new File(f.getParentFile(), f.getName() + ".jpg");
104-
f2.deleteOnExit();
105103
ConvertCmd cmd = new ConvertCmd();
106104
IMOperation op = new IMOperation();
107105
op.autoOrient();
@@ -123,11 +121,7 @@ public File getThumbnailFile(File f, boolean verbose)
123121
*/
124122
public File getImageFile(File f, boolean verbose)
125123
throws IOException, InterruptedException, IM4JavaException {
126-
// Writing an intermediate file to disk is inefficient, but since we're
127-
// doing it anyway, we should use a lossless format. IM's internal MIFF
128-
// is lossless like PNG and TIFF, but much faster.
129124
File f2 = new File(f.getParentFile(), f.getName() + ".miff");
130-
f2.deleteOnExit();
131125
ConvertCmd cmd = new ConvertCmd();
132126
IMOperation op = new IMOperation();
133127

@@ -154,9 +148,15 @@ public File getImageFile(File f, boolean verbose)
154148
// same size as the MediaBox if it doesn't exist. Also note that we
155149
// only need to check the first page, since that's what we use for
156150
// generating the thumbnail (PDPage uses a zero-based index).
157-
PDPage pdfPage = Loader.loadPDF(f).getPage(0);
158-
PDRectangle pdfPageMediaBox = pdfPage.getMediaBox();
159-
PDRectangle pdfPageCropBox = pdfPage.getCropBox();
151+
PDRectangle pdfPageMediaBox;
152+
PDRectangle pdfPageCropBox;
153+
try (
154+
PDDocument pdfDoc = Loader.loadPDF(f)
155+
) {
156+
PDPage pdfPage = pdfDoc.getPage(0);
157+
pdfPageMediaBox = pdfPage.getMediaBox();
158+
pdfPageCropBox = pdfPage.getCropBox();
159+
}
160160

161161
// This option must come *before* we open the input file.
162162
if (pdfPageCropBox != pdfPageMediaBox) {

dspace-api/src/main/java/org/dspace/app/mediafilter/ImageMagickVideoThumbnailFilter.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ public InputStream getDestinationStream(Item currentItem, InputStream source, bo
5959
public File getThumbnailFile(File f, boolean verbose)
6060
throws IOException, InterruptedException, IM4JavaException {
6161
File f2 = new File(f.getParentFile(), f.getName() + ".jpg");
62-
f2.deleteOnExit();
6362
ConvertCmd cmd = new ConvertCmd();
6463
IMOperation op = new IMOperation();
6564
op.autoOrient();

0 commit comments

Comments
 (0)