You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2021/05/07 18:34:49 UTC
svn commit: r1889641 - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox: filter/Filter.java
pdmodel/graphics/image/JPEGFactory.java
Author: tilman
Date: Fri May 7 18:34:49 2021
New Revision: 1889641
URL: http://svn.apache.org/viewvc?rev=1889641&view=rev
Log:
PDFBOX-4892: DRY refactoring of image reader search as suggested by valerybokov; make method public but final; dispose unused reader
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/Filter.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactory.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/Filter.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/Filter.java?rev=1889641&r1=1889640&r2=1889641&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/Filter.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/Filter.java Fri May 7 18:34:49 2021
@@ -139,24 +139,25 @@ public abstract class Filter
}
/**
- * Finds a suitable image reader for a format.
+ * Finds a suitable image raster reader for an image format.
*
- * @param formatName The format to search for.
+ * @param formatName The image format to search for.
* @param errorCause The probably cause if something goes wrong.
* @return The image reader for the format.
* @throws MissingImageReaderException if no image reader is found.
*/
- protected static ImageReader findImageReader(String formatName, String errorCause) throws MissingImageReaderException
+ public static final ImageReader findImageReader(String formatName, String errorCause)
+ throws MissingImageReaderException
{
Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName(formatName);
- ImageReader reader;
while (readers.hasNext())
{
- reader = readers.next();
- if (reader != null && reader.canReadRaster())
+ ImageReader reader = readers.next();
+ if (reader.canReadRaster())
{
return reader;
}
+ reader.dispose();
}
throw new MissingImageReaderException("Cannot read " + formatName + " image: " + errorCause);
}
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactory.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactory.java?rev=1889641&r1=1889640&r2=1889641&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactory.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactory.java Fri May 7 18:34:49 2021
@@ -48,7 +48,7 @@ import org.apache.commons.logging.LogFac
import org.apache.pdfbox.cos.COSArray;
import org.apache.pdfbox.cos.COSInteger;
import org.apache.pdfbox.cos.COSName;
-import org.apache.pdfbox.filter.MissingImageReaderException;
+import org.apache.pdfbox.filter.Filter;
import org.apache.pdfbox.io.IOUtils;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
@@ -149,24 +149,8 @@ public final class JPEGFactory
private static Dimensions retrieveDimensions(ByteArrayInputStream stream) throws IOException
{
- // find suitable image reader
- Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName("JPEG");
- ImageReader reader = null;
- while (readers.hasNext())
- {
- reader = readers.next();
- if (reader.canReadRaster())
- {
- break;
- }
- }
-
- if (reader == null)
- {
- throw new MissingImageReaderException(
- "Cannot read JPEG image: a suitable JAI I/O image filter is not installed");
- }
-
+ ImageReader reader =
+ Filter.findImageReader("JPEG", "a suitable JAI I/O image filter is not installed");
try (ImageInputStream iis = ImageIO.createImageInputStream(stream))
{
reader.setInput(iis);