Author: tilman
Date: Wed Aug 21 13:44:26 2024
New Revision: 1920116

URL: http://svn.apache.org/viewvc?rev=1920116&view=rev
Log:
PDFBOX-5660: split long method

Modified:
    
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java?rev=1920116&r1=1920115&r2=1920116&view=diff
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java
 (original)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java
 Wed Aug 21 13:44:26 2024
@@ -78,40 +78,7 @@ final class DCTFilter extends Filter
             irp.setSourceRegion(options.getSourceRegion());
             options.setFilterSubsampled(true);
 
-            String numChannels = getNumChannels(reader);
-
-            // get the raster using horrible JAI workarounds
-            ImageIO.setUseCache(false);
-            Raster raster;
-
-            // Strategy: use read() for RGB or "can't get metadata"
-            // use readRaster() for CMYK and gray and as fallback if read() 
fails 
-            // after "can't get metadata" because "no meta" file was CMYK
-            if ("3".equals(numChannels) || numChannels.isEmpty())
-            {
-                try
-                {
-                    // I'd like to use ImageReader#readRaster but it is buggy 
and can't read RGB correctly
-                    BufferedImage image = reader.read(0, irp);
-                    if (image.getColorModel().getNumColorComponents() == 4)
-                    {
-                        throw new IIOException("CMYK image");
-                    }
-                    raster = image.getRaster();
-                }
-                catch (IIOException e)
-                {
-                    // JAI can't read CMYK JPEGs using ImageReader#read or 
ImageIO.read but
-                    // fortunately ImageReader#readRaster isn't buggy when 
reading 4-channel files
-                    raster = reader.readRaster(0, irp);
-                }
-            }
-            else
-            {
-                // JAI can't read CMYK JPEGs using ImageReader#read or 
ImageIO.read but
-                // fortunately ImageReader#readRaster isn't buggy when reading 
4-channel files
-                raster = reader.readRaster(0, irp);
-            }
+            Raster raster = readImageRaster(reader, irp);
 
             // special handling for 4-component images
             if (raster.getNumBands() == 4)
@@ -176,6 +143,43 @@ final class DCTFilter extends Filter
         return new DecodeResult(parameters);
     }
 
+    private Raster readImageRaster(ImageReader reader, ImageReadParam irp) 
throws IOException
+    {
+        String numChannels = getNumChannels(reader);
+        // get the raster using horrible JAI workarounds
+        ImageIO.setUseCache(false);
+        Raster raster;
+        // Strategy: use read() for RGB or "can't get metadata"
+        // use readRaster() for CMYK and gray and as fallback if read() fails
+        // after "can't get metadata" because "no meta" file was CMYK
+        if ("3".equals(numChannels) || numChannels.isEmpty())
+        {
+            try
+            {
+                // I'd like to use ImageReader#readRaster but it is buggy and 
can't read RGB correctly
+                BufferedImage image = reader.read(0, irp);
+                if (image.getColorModel().getNumColorComponents() == 4)
+                {
+                    throw new IIOException("CMYK image");
+                }
+                raster = image.getRaster();
+            }
+            catch (IIOException e)
+            {
+                // JAI can't read CMYK JPEGs using ImageReader#read or 
ImageIO.read but
+                // fortunately ImageReader#readRaster isn't buggy when reading 
4-channel files
+                raster = reader.readRaster(0, irp);
+            }
+        }
+        else
+        {
+            // JAI can't read CMYK JPEGs using ImageReader#read or 
ImageIO.read but
+            // fortunately ImageReader#readRaster isn't buggy when reading 
4-channel files
+            raster = reader.readRaster(0, irp);
+        }
+        return raster;
+    }
+
     @Override
     public DecodeResult decode(InputStream encoded, OutputStream decoded,
                                COSDictionary parameters, int index) throws 
IOException


Reply via email to