mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-18 15:33:09 +00:00
refactor to reuse resizing
This commit is contained in:
@@ -22,6 +22,8 @@ import javax.imageio.ImageIO;
|
||||
import org.dspace.content.Item;
|
||||
import org.dspace.core.ConfigurationManager;
|
||||
|
||||
import org.dspace.app.mediafilter.JPEGFilter;
|
||||
|
||||
/**
|
||||
* Filter image bitstreams, scaling the image to be within the bounds of
|
||||
* thumbnail.maxwidth, thumbnail.maxheight, the size we want our thumbnail to be
|
||||
@@ -92,211 +94,7 @@ public class BrandedPreviewJPEGFilter extends MediaFilter
|
||||
String brandFont = ConfigurationManager.getProperty("webui.preview.brand.font");
|
||||
int brandFontPoint = ConfigurationManager.getIntProperty("webui.preview.brand.fontpoint");
|
||||
|
||||
// now get the image dimensions
|
||||
float xsize = (float) buf.getWidth(null);
|
||||
float ysize = (float) buf.getHeight(null);
|
||||
|
||||
// if verbose flag is set, print out dimensions
|
||||
// to STDOUT
|
||||
if (verbose)
|
||||
{
|
||||
System.out.println("original size: " + xsize + "," + ysize);
|
||||
}
|
||||
|
||||
// scale by x first if needed
|
||||
if (xsize > xmax)
|
||||
{
|
||||
// calculate scaling factor so that xsize * scale = new size (max)
|
||||
float scaleFactor = xmax / xsize;
|
||||
|
||||
// if verbose flag is set, print out extracted text
|
||||
// to STDOUT
|
||||
if (verbose)
|
||||
{
|
||||
System.out.println("x scale factor: " + scaleFactor);
|
||||
}
|
||||
|
||||
// now reduce x size
|
||||
// and y size
|
||||
xsize = xsize * scaleFactor;
|
||||
ysize = ysize * scaleFactor;
|
||||
|
||||
// if verbose flag is set, print out extracted text
|
||||
// to STDOUT
|
||||
if (verbose)
|
||||
{
|
||||
System.out.println("new size: " + xsize + "," + ysize);
|
||||
}
|
||||
}
|
||||
|
||||
// scale by y if needed
|
||||
if (ysize > ymax)
|
||||
{
|
||||
float scaleFactor = ymax / ysize;
|
||||
|
||||
// now reduce x size
|
||||
// and y size
|
||||
xsize = xsize * scaleFactor;
|
||||
ysize = ysize * scaleFactor;
|
||||
}
|
||||
|
||||
// if verbose flag is set, print details to STDOUT
|
||||
if (verbose)
|
||||
{
|
||||
System.out.println("created thumbnail size: " + xsize + ", "
|
||||
+ ysize);
|
||||
}
|
||||
|
||||
// create an image buffer for the preview with the new xsize, ysize
|
||||
// we add
|
||||
BufferedImage branded = new BufferedImage((int) xsize, (int) ysize + brandHeight,
|
||||
BufferedImage.TYPE_INT_RGB);
|
||||
|
||||
// Use blurring if selected in config.
|
||||
// a little blur before scaling does wonders for keeping moire in check.
|
||||
if (blurring)
|
||||
{
|
||||
// send the buffered image off to get blurred.
|
||||
buf = getBlurredInstance((BufferedImage) buf);
|
||||
}
|
||||
|
||||
// Use high quality scaling method if selected in config.
|
||||
// this has a definite performance penalty.
|
||||
if (hqscaling)
|
||||
{
|
||||
// send the buffered image off to get an HQ downscale.
|
||||
buf = getScaledInstance((BufferedImage) buf, (int) xsize, (int) ysize,
|
||||
(Object) RenderingHints.VALUE_INTERPOLATION_BICUBIC, (boolean) true);
|
||||
}
|
||||
|
||||
// now render the image into the preview buffer
|
||||
Graphics2D g2d = branded.createGraphics();
|
||||
g2d.drawImage(buf, 0, 0, (int) xsize, (int) ysize, null);
|
||||
|
||||
Brand brand = new Brand((int) xsize, brandHeight, new Font(brandFont, Font.PLAIN, brandFontPoint), 5);
|
||||
BufferedImage brandImage = brand.create(ConfigurationManager.getProperty("webui.preview.brand"),
|
||||
ConfigurationManager.getProperty("webui.preview.brand.abbrev"),
|
||||
currentItem == null ? "" : "hdl:" + currentItem.getHandle());
|
||||
|
||||
g2d.drawImage(brandImage, (int)0, (int)ysize, (int) xsize, (int) 20, null);
|
||||
|
||||
// now create an input stream for the thumbnail buffer and return it
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
|
||||
ImageIO.write(branded, "jpeg", baos);
|
||||
|
||||
// now get the array
|
||||
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
|
||||
|
||||
return bais; // hope this gets written out before its garbage collected!
|
||||
}
|
||||
|
||||
public BufferedImage getNormalizedInstance(BufferedImage buf)
|
||||
{
|
||||
int type = (buf.getTransparency() == Transparency.OPAQUE) ?
|
||||
BufferedImage.TYPE_INT_RGB : BufferedImage.TYPE_INT_ARGB_PRE;
|
||||
int w, h;
|
||||
w = buf.getWidth();
|
||||
h = buf.getHeight();
|
||||
BufferedImage normal = new BufferedImage(w, h, type);
|
||||
Graphics2D g2d = normal.createGraphics();
|
||||
g2d.drawImage(buf, 0, 0, w, h, Color.WHITE, null);
|
||||
g2d.dispose();
|
||||
return normal;
|
||||
}
|
||||
|
||||
public BufferedImage getBlurredInstance(BufferedImage buf)
|
||||
{
|
||||
/**
|
||||
* Convenience method that returns a blurred instance of the
|
||||
* provided {@code BufferedImage}.
|
||||
*
|
||||
*/
|
||||
|
||||
buf = getNormalizedInstance(buf);
|
||||
|
||||
// kernel for blur op
|
||||
float[] matrix = {
|
||||
0.111f, 0.111f, 0.111f,
|
||||
0.111f, 0.111f, 0.111f,
|
||||
0.111f, 0.111f, 0.111f,
|
||||
};
|
||||
|
||||
// perform the blur and return the blurred version.
|
||||
BufferedImageOp blur = new ConvolveOp( new Kernel(3, 3, matrix) );
|
||||
BufferedImage blurbuf = blur.filter(buf, null);
|
||||
return blurbuf;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method that returns a scaled instance of the
|
||||
* provided {@code BufferedImage}.
|
||||
*
|
||||
* @param buf the original image to be scaled
|
||||
* @param targetWidth the desired width of the scaled instance,
|
||||
* in pixels
|
||||
* @param targetHeight the desired height of the scaled instance,
|
||||
* in pixels
|
||||
* @param hint one of the rendering hints that corresponds to
|
||||
* {@code RenderingHints.KEY_INTERPOLATION} (e.g.
|
||||
* {@code RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR},
|
||||
* {@code RenderingHints.VALUE_INTERPOLATION_BILINEAR},
|
||||
* {@code RenderingHints.VALUE_INTERPOLATION_BICUBIC})
|
||||
* @param higherQuality if true, this method will use a multi-step
|
||||
* scaling technique that provides higher quality than the usual
|
||||
* one-step technique (only useful in downscaling cases, where
|
||||
* {@code targetWidth} or {@code targetHeight} is
|
||||
* smaller than the original dimensions, and generally only when
|
||||
* the {@code BILINEAR} hint is specified)
|
||||
* @return a scaled version of the original {@code BufferedImage}
|
||||
*/
|
||||
public BufferedImage getScaledInstance(BufferedImage buf,
|
||||
int targetWidth,
|
||||
int targetHeight,
|
||||
Object hint,
|
||||
boolean higherQuality)
|
||||
{
|
||||
int type = (buf.getTransparency() == Transparency.OPAQUE) ?
|
||||
BufferedImage.TYPE_INT_RGB : BufferedImage.TYPE_INT_ARGB;
|
||||
BufferedImage scalebuf = (BufferedImage)buf;
|
||||
int w, h;
|
||||
if (higherQuality) {
|
||||
// Use multi-step technique: start with original size, then
|
||||
// scale down in multiple passes with drawImage()
|
||||
// until the target size is reached
|
||||
w = buf.getWidth();
|
||||
h = buf.getHeight();
|
||||
} else {
|
||||
// Use one-step technique: scale directly from original
|
||||
// size to target size with a single drawImage() call
|
||||
w = targetWidth;
|
||||
h = targetHeight;
|
||||
}
|
||||
|
||||
do {
|
||||
if (higherQuality && w > targetWidth) {
|
||||
w /= 2;
|
||||
if (w < targetWidth) {
|
||||
w = targetWidth;
|
||||
}
|
||||
}
|
||||
|
||||
if (higherQuality && h > targetHeight) {
|
||||
h /= 2;
|
||||
if (h < targetHeight) {
|
||||
h = targetHeight;
|
||||
}
|
||||
}
|
||||
|
||||
BufferedImage tmp = new BufferedImage(w, h, type);
|
||||
Graphics2D g2d = tmp.createGraphics();
|
||||
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, hint);
|
||||
g2d.drawImage(scalebuf, 0, 0, w, h, Color.WHITE, null);
|
||||
g2d.dispose();
|
||||
|
||||
scalebuf = tmp;
|
||||
} while (w != targetWidth || h != targetHeight);
|
||||
|
||||
return scalebuf;
|
||||
JPEGFilter jpegFilter = new JPEGFilter();
|
||||
return jpegFilter.getThumbDim(currentItem, buf, verbose, xmax, ymax, blurring, hqscaling, brandHeight, brandFontPoint, brandFont);
|
||||
}
|
||||
}
|
||||
|
@@ -12,6 +12,7 @@ import java.awt.Color;
|
||||
import java.awt.image.*;
|
||||
import java.awt.RenderingHints;
|
||||
import java.awt.Transparency;
|
||||
import java.awt.Font;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.InputStream;
|
||||
@@ -77,6 +78,12 @@ public class JPEGFilter extends MediaFilter implements SelfRegisterInputFormats
|
||||
// read in bitstream's image
|
||||
BufferedImage buf = ImageIO.read(source);
|
||||
|
||||
return getThumb(currentItem, buf, verbose);
|
||||
}
|
||||
|
||||
public InputStream getThumb(Item currentItem, BufferedImage buf, boolean verbose)
|
||||
throws Exception
|
||||
{
|
||||
// get config params
|
||||
float xmax = (float) ConfigurationManager
|
||||
.getIntProperty("thumbnail.maxwidth");
|
||||
@@ -87,6 +94,12 @@ public class JPEGFilter extends MediaFilter implements SelfRegisterInputFormats
|
||||
boolean hqscaling = (boolean) ConfigurationManager
|
||||
.getBooleanProperty("thumbnail.hqscaling");
|
||||
|
||||
return getThumbDim(currentItem, buf, verbose, xmax, ymax, blurring, hqscaling, 0, 0, null);
|
||||
}
|
||||
|
||||
public InputStream getThumbDim(Item currentItem, BufferedImage buf, boolean verbose, float xmax, float ymax, boolean blurring, boolean hqscaling, int brandHeight, int brandFontPoint, String brandFont)
|
||||
throws Exception
|
||||
{
|
||||
// now get the image dimensions
|
||||
float xsize = (float) buf.getWidth(null);
|
||||
float ysize = (float) buf.getHeight(null);
|
||||
@@ -167,6 +180,15 @@ public class JPEGFilter extends MediaFilter implements SelfRegisterInputFormats
|
||||
Graphics2D g2d = thumbnail.createGraphics();
|
||||
g2d.drawImage(buf, 0, 0, (int) xsize, (int) ysize, null);
|
||||
|
||||
if (brandHeight != 0) {
|
||||
Brand brand = new Brand((int) xsize, brandHeight, new Font(brandFont, Font.PLAIN, brandFontPoint), 5);
|
||||
BufferedImage brandImage = brand.create(ConfigurationManager.getProperty("webui.preview.brand"),
|
||||
ConfigurationManager.getProperty("webui.preview.brand.abbrev"),
|
||||
currentItem == null ? "" : "hdl:" + currentItem.getHandle());
|
||||
|
||||
g2d.drawImage(brandImage, (int)0, (int)ysize, (int) xsize, (int) 20, null);
|
||||
}
|
||||
|
||||
// now create an input stream for the thumbnail buffer and return it
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
|
||||
@@ -213,14 +235,13 @@ public class JPEGFilter extends MediaFilter implements SelfRegisterInputFormats
|
||||
return normal;
|
||||
}
|
||||
|
||||
public BufferedImage getBlurredInstance(BufferedImage buf)
|
||||
{
|
||||
/**
|
||||
* Convenience method that returns a blurred instance of the
|
||||
* provided {@code BufferedImage}.
|
||||
*
|
||||
*/
|
||||
|
||||
public BufferedImage getBlurredInstance(BufferedImage buf)
|
||||
{
|
||||
buf = getNormalizedInstance(buf);
|
||||
|
||||
// kernel for blur op
|
||||
|
@@ -24,6 +24,8 @@ import org.apache.pdfbox.rendering.PDFRenderer;
|
||||
import org.dspace.content.Item;
|
||||
import org.dspace.core.ConfigurationManager;
|
||||
|
||||
import org.dspace.app.mediafilter.JPEGFilter;
|
||||
|
||||
/**
|
||||
* Create JPEG thumbnails from PDF cover page using PDFBox.
|
||||
* Based on JPEGFilter:
|
||||
@@ -86,111 +88,10 @@ public class PDFBoxThumbnail extends MediaFilter implements SelfRegisterInputFor
|
||||
// ImageIO.write(buf, "PNG", new File("custom-render.png"));
|
||||
doc.close();
|
||||
|
||||
// read in bitstream's image
|
||||
// BufferedImage buf = ImageIO.read(source);
|
||||
|
||||
// get config params
|
||||
float xmax = (float) ConfigurationManager
|
||||
.getIntProperty("thumbnail.maxwidth");
|
||||
float ymax = (float) ConfigurationManager
|
||||
.getIntProperty("thumbnail.maxheight");
|
||||
boolean blurring = (boolean) ConfigurationManager
|
||||
.getBooleanProperty("thumbnail.blurring");
|
||||
boolean hqscaling = (boolean) ConfigurationManager
|
||||
.getBooleanProperty("thumbnail.hqscaling");
|
||||
|
||||
// now get the image dimensions
|
||||
float xsize = (float) buf.getWidth(null);
|
||||
float ysize = (float) buf.getHeight(null);
|
||||
|
||||
// if verbose flag is set, print out dimensions
|
||||
// to STDOUT
|
||||
if (verbose)
|
||||
{
|
||||
System.out.println("original size: " + xsize + "," + ysize);
|
||||
}
|
||||
|
||||
// scale by x first if needed
|
||||
if (xsize > xmax)
|
||||
{
|
||||
// calculate scaling factor so that xsize * scale = new size (max)
|
||||
float scale_factor = xmax / xsize;
|
||||
|
||||
// if verbose flag is set, print out extracted text
|
||||
// to STDOUT
|
||||
if (verbose)
|
||||
{
|
||||
System.out.println("x scale factor: " + scale_factor);
|
||||
}
|
||||
|
||||
// now reduce x size
|
||||
// and y size
|
||||
xsize = xsize * scale_factor;
|
||||
ysize = ysize * scale_factor;
|
||||
|
||||
// if verbose flag is set, print out extracted text
|
||||
// to STDOUT
|
||||
if (verbose)
|
||||
{
|
||||
System.out.println("new size: " + xsize + "," + ysize);
|
||||
}
|
||||
}
|
||||
|
||||
// scale by y if needed
|
||||
if (ysize > ymax)
|
||||
{
|
||||
float scale_factor = ymax / ysize;
|
||||
|
||||
// now reduce x size
|
||||
// and y size
|
||||
xsize = xsize * scale_factor;
|
||||
ysize = ysize * scale_factor;
|
||||
}
|
||||
|
||||
// if verbose flag is set, print details to STDOUT
|
||||
if (verbose)
|
||||
{
|
||||
System.out.println("created thumbnail size: " + xsize + ", "
|
||||
+ ysize);
|
||||
}
|
||||
|
||||
// create an image buffer for the thumbnail with the new xsize, ysize
|
||||
BufferedImage thumbnail = new BufferedImage((int) xsize, (int) ysize,
|
||||
BufferedImage.TYPE_INT_RGB);
|
||||
|
||||
// Use blurring if selected in config.
|
||||
// a little blur before scaling does wonders for keeping moire in check.
|
||||
if (blurring)
|
||||
{
|
||||
// send the buffered image off to get blurred.
|
||||
buf = getBlurredInstance((BufferedImage) buf);
|
||||
}
|
||||
|
||||
// Use high quality scaling method if selected in config.
|
||||
// this has a definite performance penalty.
|
||||
if (hqscaling)
|
||||
{
|
||||
// send the buffered image off to get an HQ downscale.
|
||||
buf = getScaledInstance((BufferedImage) buf, (int) xsize, (int) ysize,
|
||||
(Object) RenderingHints.VALUE_INTERPOLATION_BICUBIC, (boolean) true);
|
||||
}
|
||||
|
||||
// now render the image into the thumbnail buffer
|
||||
Graphics2D g2d = thumbnail.createGraphics();
|
||||
g2d.drawImage(buf, 0, 0, (int) xsize, (int) ysize, null);
|
||||
|
||||
// now create an input stream for the thumbnail buffer and return it
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
|
||||
ImageIO.write(thumbnail, "jpeg", baos);
|
||||
|
||||
// now get the array
|
||||
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
|
||||
|
||||
return bais; // hope this gets written out before its garbage collected!
|
||||
JPEGFilter jpegFilter = new JPEGFilter();
|
||||
return jpegFilter.getThumb(currentItem, buf, verbose);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String[] getInputMIMETypes()
|
||||
{
|
||||
@@ -210,113 +111,4 @@ public class PDFBoxThumbnail extends MediaFilter implements SelfRegisterInputFor
|
||||
// return ImageIO.getReaderFileSuffixes();
|
||||
return null;
|
||||
}
|
||||
|
||||
public BufferedImage getNormalizedInstance(BufferedImage buf)
|
||||
{
|
||||
int type = (buf.getTransparency() == Transparency.OPAQUE) ?
|
||||
BufferedImage.TYPE_INT_RGB : BufferedImage.TYPE_INT_ARGB_PRE;
|
||||
int w, h;
|
||||
w = buf.getWidth();
|
||||
h = buf.getHeight();
|
||||
BufferedImage normal = new BufferedImage(w, h, type);
|
||||
Graphics2D g2d = normal.createGraphics();
|
||||
g2d.drawImage(buf, 0, 0, w, h, Color.WHITE, null);
|
||||
g2d.dispose();
|
||||
return normal;
|
||||
}
|
||||
|
||||
public BufferedImage getBlurredInstance(BufferedImage buf)
|
||||
{
|
||||
/**
|
||||
* Convenience method that returns a blurred instance of the
|
||||
* provided {@code BufferedImage}.
|
||||
*
|
||||
*/
|
||||
|
||||
buf = getNormalizedInstance(buf);
|
||||
|
||||
// kernel for blur op
|
||||
float[] matrix = {
|
||||
0.111f, 0.111f, 0.111f,
|
||||
0.111f, 0.111f, 0.111f,
|
||||
0.111f, 0.111f, 0.111f,
|
||||
};
|
||||
|
||||
// perform the blur and return the blurred version.
|
||||
BufferedImageOp blur = new ConvolveOp( new Kernel(3, 3, matrix) );
|
||||
BufferedImage blurbuf = blur.filter(buf, null);
|
||||
return blurbuf;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method that returns a scaled instance of the
|
||||
* provided {@code BufferedImage}.
|
||||
*
|
||||
* @param buf the original image to be scaled
|
||||
* @param targetWidth the desired width of the scaled instance,
|
||||
* in pixels
|
||||
* @param targetHeight the desired height of the scaled instance,
|
||||
* in pixels
|
||||
* @param hint one of the rendering hints that corresponds to
|
||||
* {@code RenderingHints.KEY_INTERPOLATION} (e.g.
|
||||
* {@code RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR},
|
||||
* {@code RenderingHints.VALUE_INTERPOLATION_BILINEAR},
|
||||
* {@code RenderingHints.VALUE_INTERPOLATION_BICUBIC})
|
||||
* @param higherQuality if true, this method will use a multi-step
|
||||
* scaling technique that provides higher quality than the usual
|
||||
* one-step technique (only useful in downscaling cases, where
|
||||
* {@code targetWidth} or {@code targetHeight} is
|
||||
* smaller than the original dimensions, and generally only when
|
||||
* the {@code BILINEAR} hint is specified)
|
||||
* @return a scaled version of the original {@code BufferedImage}
|
||||
*/
|
||||
public BufferedImage getScaledInstance(BufferedImage buf,
|
||||
int targetWidth,
|
||||
int targetHeight,
|
||||
Object hint,
|
||||
boolean higherQuality)
|
||||
{
|
||||
int type = (buf.getTransparency() == Transparency.OPAQUE) ?
|
||||
BufferedImage.TYPE_INT_RGB : BufferedImage.TYPE_INT_ARGB;
|
||||
BufferedImage scalebuf = (BufferedImage)buf;
|
||||
int w, h;
|
||||
if (higherQuality) {
|
||||
// Use multi-step technique: start with original size, then
|
||||
// scale down in multiple passes with drawImage()
|
||||
// until the target size is reached
|
||||
w = buf.getWidth();
|
||||
h = buf.getHeight();
|
||||
} else {
|
||||
// Use one-step technique: scale directly from original
|
||||
// size to target size with a single drawImage() call
|
||||
w = targetWidth;
|
||||
h = targetHeight;
|
||||
}
|
||||
|
||||
do {
|
||||
if (higherQuality && w > targetWidth) {
|
||||
w /= 2;
|
||||
if (w < targetWidth) {
|
||||
w = targetWidth;
|
||||
}
|
||||
}
|
||||
|
||||
if (higherQuality && h > targetHeight) {
|
||||
h /= 2;
|
||||
if (h < targetHeight) {
|
||||
h = targetHeight;
|
||||
}
|
||||
}
|
||||
|
||||
BufferedImage tmp = new BufferedImage(w, h, type);
|
||||
Graphics2D g2d = tmp.createGraphics();
|
||||
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, hint);
|
||||
g2d.drawImage(scalebuf, 0, 0, w, h, Color.WHITE, null);
|
||||
g2d.dispose();
|
||||
|
||||
scalebuf = tmp;
|
||||
} while (w != targetWidth || h != targetHeight);
|
||||
|
||||
return scalebuf;
|
||||
}
|
||||
}
|
||||
|
@@ -353,6 +353,7 @@ http.proxy.port =
|
||||
filter.plugins = PDF Text Extractor, HTML Text Extractor, \
|
||||
PowerPoint Text Extractor, \
|
||||
Word Text Extractor, JPEG Thumbnail, \
|
||||
PDFBox JPEG Thumbnail, \
|
||||
Excel Text Extractor
|
||||
|
||||
# [To enable Branded Preview]: uncomment and insert the following into the plugin list
|
||||
@@ -371,6 +372,7 @@ plugin.named.org.dspace.app.mediafilter.FormatFilter = \
|
||||
org.dspace.app.mediafilter.PowerPointFilter = PowerPoint Text Extractor, \
|
||||
org.dspace.app.mediafilter.JPEGFilter = JPEG Thumbnail, \
|
||||
org.dspace.app.mediafilter.BrandedPreviewJPEGFilter = Branded Preview JPEG, \
|
||||
org.dspace.app.mediafilter.PDFBoxThumbnail = PDFBox JPEG Thumbnail, \
|
||||
org.dspace.app.mediafilter.ImageMagickImageThumbnailFilter = ImageMagick Image Thumbnail, \
|
||||
org.dspace.app.mediafilter.ImageMagickPdfThumbnailFilter = ImageMagick PDF Thumbnail, \
|
||||
org.dspace.app.mediafilter.ExcelFilter = Excel Text Extractor
|
||||
@@ -385,6 +387,7 @@ filter.org.dspace.app.mediafilter.BrandedPreviewJPEGFilter.inputFormats = BMP, G
|
||||
filter.org.dspace.app.mediafilter.ImageMagickImageThumbnailFilter.inputFormats = BMP, GIF, image/png, JPG, TIFF, JPEG, JPEG 2000
|
||||
filter.org.dspace.app.mediafilter.ImageMagickPdfThumbnailFilter.inputFormats = Adobe PDF
|
||||
filter.org.dspace.app.mediafilter.ExcelFilter.inputFormats = Microsoft Excel, Microsoft Excel XML
|
||||
filter.org.dspace.app.mediafilter.PDFBoxThumbnail.inputFormats = Adobe PDF
|
||||
|
||||
#Publicly accessible thumbnails of restricted content.
|
||||
#List the MediaFilter name's that would get publicly accessible permissions
|
||||
|
Reference in New Issue
Block a user