diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java index 41c44503..a15989b3 100755 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReader.java @@ -634,10 +634,14 @@ public class TIFFImageReader extends ImageReaderBase { : new LittleEndianDataInputStream(adapter); } - // Read a full strip/tile - Raster clippedRow = clipRowToRect(rowRaster, srcRegion, + // Clip the stripTile rowRaster to not exceed the srcRegion + Rectangle clip = new Rectangle(srcRegion); + clip.width = Math.min((colsInTile + xSub - 1) / xSub, srcRegion.width); + Raster clippedRow = clipRowToRect(rowRaster, clip, param != null ? param.getSourceBands() : null, param != null ? param.getSourceXSubsampling() : 1); + + // Read a full strip/tile readStripTileData(clippedRow, srcRegion, xSub, ySub, numBands, interpretation, destRaster, col, row, colsInTile, rowsInTile, input); if (abortRequested()) { diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java index 65ef04d3..83a3c838 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java @@ -68,7 +68,8 @@ public class TIFFImageReaderTest extends ImageReaderAbstractTestCase