Skip to content

Commit b1c46d1

Browse files
committed
Avoid redundant reads of pixel-interleaved files
Uses the same block data for all bands. Fixes #376.
1 parent d6b48ad commit b1c46d1

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

src/geotiffimage.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -470,13 +470,18 @@ class GeoTIFFImage {
470470

471471
for (let yTile = minYTile; yTile < maxYTile; ++yTile) {
472472
for (let xTile = minXTile; xTile < maxXTile; ++xTile) {
473+
let getPromise;
474+
if (this.planarConfiguration === 1) {
475+
getPromise = this.getTileOrStrip(xTile, yTile, 0, poolOrDecoder, signal);
476+
}
473477
for (let sampleIndex = 0; sampleIndex < samples.length; ++sampleIndex) {
474478
const si = sampleIndex;
475479
const sample = samples[sampleIndex];
476480
if (this.planarConfiguration === 2) {
477-
bytesPerPixel = this.getSampleByteSize(sampleIndex);
481+
bytesPerPixel = this.getSampleByteSize(sample);
482+
getPromise = this.getTileOrStrip(xTile, yTile, sample, poolOrDecoder, signal);
478483
}
479-
const promise = this.getTileOrStrip(xTile, yTile, sample, poolOrDecoder, signal).then((tile) => {
484+
const promise = getPromise.then((tile) => {
480485
const buffer = tile.data;
481486
const dataView = new DataView(buffer);
482487
const blockHeight = this.getBlockHeight(tile.y);

0 commit comments

Comments
 (0)