Author: tilman
Date: Sun Mar 22 11:09:25 2026
New Revision: 1932457

Log:
PDFBOX-5660: optimize, as suggested by Valery Bokov; closes #425

Modified:
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/SampledImageReader.java

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/SampledImageReader.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/SampledImageReader.java
   Sun Mar 22 11:09:21 2026        (r1932456)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/SampledImageReader.java
   Sun Mar 22 11:09:25 2026        (r1932457)
@@ -307,10 +307,14 @@ final class SampledImageReader
             final boolean isIndexed = colorSpace instanceof PDIndexed;
 
             // calculate row padding
-            int padding = 0;
-            if (inputWidth * numComponents * bitsPerComponent % 8 > 0)
+            int padding = inputWidth * numComponents * bitsPerComponent % 8;
+            if (padding > 0)
             {
-                padding = 8 - (inputWidth * numComponents * bitsPerComponent % 
8);
+                padding = 8 - padding;
+            }
+            else
+            {
+                padding = 0;
             }
 
             // read stream
@@ -539,7 +543,7 @@ final class SampledImageReader
             {
                 // we just need to copy all sample data, then convert to RGB 
image.
                 long inputResult = IOUtils.populateBuffer(input, bank);
-                if (inputResult != (long) width * height * numComponents)
+                if (LOG.isDebugEnabled() && inputResult != (long) width * 
height * numComponents)
                 {
                     LOG.debug("Tried reading " + (long) width * height * 
numComponents + " bytes but only " + inputResult + " bytes read");
                 }
@@ -654,10 +658,14 @@ final class SampledImageReader
             }
 
             // calculate row padding
-            int padding = 0;
-            if (inputWidth * numComponents * bitsPerComponent % 8 > 0)
+            int padding = inputWidth * numComponents * bitsPerComponent % 8;
+            if (padding > 0)
+            {
+                padding = 8 - padding;
+            }
+            else
             {
-                padding = 8 - (inputWidth * numComponents * bitsPerComponent % 
8);
+                padding = 0;
             }
 
             // read stream

Reply via email to