From 66ea79baacddb1faa7ab00f73d067d64ea7c0cc6 Mon Sep 17 00:00:00 2001 From: "valery.bokov" Date: Wed, 4 Mar 2026 21:43:31 +0100 Subject: [PATCH] reduce multiplication operations in SampledImageReader --- .../graphics/image/SampledImageReader.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/SampledImageReader.java b/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/SampledImageReader.java index cbcae0ea09e..aab236cc110 100644 --- a/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/SampledImageReader.java +++ b/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/SampledImageReader.java @@ -285,10 +285,14 @@ private static void readRasterFromAny(PDImage pdImage, WritableRaster raster) 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 @@ -498,10 +502,11 @@ private static BufferedImage from8bit(PDImage pdImage, WritableRaster raster, Re { // we just need to copy all sample data, then convert to RGB image. int inputResult = input.readNBytes(bank, 0, bank.length); - if (inputResult != (long) width * height * numComponents) + long tmpResult = (long) width * height * numComponents; + if (inputResult != tmpResult) { LOG.debug("Tried reading {} bytes but only {} bytes read", - (long) width * height * numComponents, inputResult); + tmpResult, inputResult); } return pdImage.getColorSpace().toRGBImage(raster); }