@cogeotiff/core 9.4.0 → 9.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/build/__test__/cog.image.test.js +53 -0
- package/build/const/tiff.tag.id.d.ts +19 -2
- package/build/const/tiff.tag.id.d.ts.map +1 -1
- package/build/read/tiff.tag.factory.d.ts +4 -4
- package/build/read/tiff.tag.factory.d.ts.map +1 -1
- package/build/read/tiff.tag.factory.js +6 -6
- package/build/tiff.d.ts +5 -2
- package/build/tiff.d.ts.map +1 -1
- package/build/tiff.image.d.ts +8 -12
- package/build/tiff.image.d.ts.map +1 -1
- package/build/tiff.image.js +21 -21
- package/build/tiff.js +9 -7
- package/package.json +3 -2
- package/src/__test__/cog.image.test.ts +61 -0
- package/src/const/tiff.tag.id.ts +23 -2
- package/src/read/tiff.tag.factory.ts +16 -7
- package/src/tiff.image.ts +32 -24
- package/src/tiff.ts +13 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [9.5.0](https://github.com/blacha/cogeotiff/compare/core-v9.4.0...core-v9.5.0) (2026-03-25)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* Improved type definitions for ModelPixelScale and ModelTransformation ([#1426](https://github.com/blacha/cogeotiff/issues/1426)) ([eaeb2d7](https://github.com/blacha/cogeotiff/commit/eaeb2d72cd8b0e61ac3c17a6b89c5a95c9b9bb22))
|
|
9
|
+
* more abort signals ([#1433](https://github.com/blacha/cogeotiff/issues/1433)) ([67d4506](https://github.com/blacha/cogeotiff/commit/67d450687a9b91f31e6b5191eb5d455650757e7e)), closes [#1430](https://github.com/blacha/cogeotiff/issues/1430)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* handle falsy GdalNoData values like "0" ([#1450](https://github.com/blacha/cogeotiff/issues/1450)) ([68fdded](https://github.com/blacha/cogeotiff/commit/68fdded1b78adde0b926f6cf548bf17f1fec8319))
|
|
15
|
+
|
|
3
16
|
## [9.4.0](https://github.com/blacha/cogeotiff/compare/core-v9.3.0...core-v9.4.0) (2026-02-26)
|
|
4
17
|
|
|
5
18
|
|
|
@@ -5,6 +5,8 @@ import { TestFileSource } from '../__benchmark__/source.file.js';
|
|
|
5
5
|
import { SourceMemory } from '../__benchmark__/source.memory.js';
|
|
6
6
|
import { TiffMimeType } from '../const/tiff.mime.js';
|
|
7
7
|
import { Photometric, TiffTag } from '../const/tiff.tag.id.js';
|
|
8
|
+
import { TiffTagValueType } from '../const/tiff.tag.value.js';
|
|
9
|
+
import { TiffImage } from '../tiff.image.js';
|
|
8
10
|
import { Tiff } from '../tiff.js';
|
|
9
11
|
import { ByteSize } from '../util/bytes.js';
|
|
10
12
|
// 900913 properties.
|
|
@@ -175,3 +177,54 @@ describe('CogStrip', () => {
|
|
|
175
177
|
assert.equal(stripB?.bytes.byteLength, 152);
|
|
176
178
|
});
|
|
177
179
|
});
|
|
180
|
+
describe('TiffImage.noData', () => {
|
|
181
|
+
/** Create a TiffImage with a specific GdalNoData tag value for testing */
|
|
182
|
+
function imageWithNoData(value) {
|
|
183
|
+
const tags = new Map();
|
|
184
|
+
tags.set(TiffTag.GdalNoData, {
|
|
185
|
+
id: TiffTag.GdalNoData,
|
|
186
|
+
name: 'GdalNoData',
|
|
187
|
+
tagOffset: 0,
|
|
188
|
+
count: 1,
|
|
189
|
+
dataType: TiffTagValueType.Ascii,
|
|
190
|
+
type: 'inline',
|
|
191
|
+
value,
|
|
192
|
+
});
|
|
193
|
+
return new TiffImage(null, 0, tags);
|
|
194
|
+
}
|
|
195
|
+
it('should return null when GdalNoData tag is absent', () => {
|
|
196
|
+
const img = new TiffImage(null, 0, new Map());
|
|
197
|
+
assert.equal(img.noData, null);
|
|
198
|
+
});
|
|
199
|
+
it('should parse a negative nodata value', () => {
|
|
200
|
+
const img = imageWithNoData('-9999');
|
|
201
|
+
assert.equal(img.noData, -9999);
|
|
202
|
+
});
|
|
203
|
+
it('should parse nodata value of "0" (falsy string)', () => {
|
|
204
|
+
const img = imageWithNoData('0');
|
|
205
|
+
assert.equal(img.noData, 0);
|
|
206
|
+
});
|
|
207
|
+
it('should parse a positive nodata value', () => {
|
|
208
|
+
const img = imageWithNoData('255');
|
|
209
|
+
assert.equal(img.noData, 255);
|
|
210
|
+
});
|
|
211
|
+
it('should parse a floating point nodata value', () => {
|
|
212
|
+
const img = imageWithNoData('-3.4028234663852886e+38');
|
|
213
|
+
assert.equal(img.noData, -3.4028234663852886e38);
|
|
214
|
+
});
|
|
215
|
+
it('should throw when lazy tag value is undefined (not yet fetched)', () => {
|
|
216
|
+
const tags = new Map();
|
|
217
|
+
tags.set(TiffTag.GdalNoData, {
|
|
218
|
+
id: TiffTag.GdalNoData,
|
|
219
|
+
name: 'GdalNoData',
|
|
220
|
+
tagOffset: 0,
|
|
221
|
+
count: 1,
|
|
222
|
+
dataType: TiffTagValueType.Ascii,
|
|
223
|
+
type: 'lazy',
|
|
224
|
+
dataOffset: 0,
|
|
225
|
+
value: undefined,
|
|
226
|
+
});
|
|
227
|
+
const img = new TiffImage(null, 0, tags);
|
|
228
|
+
assert.throws(() => img.noData, /GdalNoData tag is not loaded/);
|
|
229
|
+
});
|
|
230
|
+
});
|
|
@@ -410,9 +410,26 @@ export interface TiffTagType {
|
|
|
410
410
|
[TiffTag.SampleFormat]: SampleFormat[];
|
|
411
411
|
[TiffTag.GdalMetadata]: string;
|
|
412
412
|
[TiffTag.GdalNoData]: string;
|
|
413
|
-
[TiffTag.ModelPixelScale]: number
|
|
413
|
+
[TiffTag.ModelPixelScale]: [scaleX: number, scaleY: number, scaleZ: number];
|
|
414
414
|
[TiffTag.ModelTiePoint]: number[];
|
|
415
|
-
[TiffTag.ModelTransformation]:
|
|
415
|
+
[TiffTag.ModelTransformation]: [
|
|
416
|
+
number,
|
|
417
|
+
number,
|
|
418
|
+
number,
|
|
419
|
+
number,
|
|
420
|
+
number,
|
|
421
|
+
number,
|
|
422
|
+
number,
|
|
423
|
+
number,
|
|
424
|
+
number,
|
|
425
|
+
number,
|
|
426
|
+
number,
|
|
427
|
+
number,
|
|
428
|
+
number,
|
|
429
|
+
number,
|
|
430
|
+
number,
|
|
431
|
+
number
|
|
432
|
+
];
|
|
416
433
|
[TiffTag.GeoKeyDirectory]: number[];
|
|
417
434
|
[TiffTag.GeoDoubleParams]: number[];
|
|
418
435
|
[TiffTag.GeoAsciiParams]: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiff.tag.id.d.ts","sourceRoot":"","sources":["../../src/const/tiff.tag.id.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,oBAAY,WAAW;IACrB,iCAAiC;IACjC,YAAY,IAAI;IAChB,uBAAuB;IACvB,IAAI,IAAI;IACR,wBAAwB;IACxB,IAAI,IAAI;CACT;AAED,oBAAY,WAAW;IAErB,OAAO,IAAI;IAEX,QAAQ,IAAI;IAEZ,WAAW,IAAI;IAEf,UAAU,IAAI;IAEd,OAAO,IAAI;IAEX,QAAQ,IAAI;IAEZ,WAAW,IAAI;IAEf,UAAU,IAAI;CACf;AAED,oBAAY,aAAa;IACvB;;;OAGG;IACH,WAAW,IAAI;IAEf;;;OAGG;IACH,YAAY,IAAI;CACjB;AAED,oBAAY,aAAa;IACvB,OAAO,IAAI;IACX,mCAAmC;IACnC,SAAS,IAAI;IACb,2CAA2C;IAC3C,UAAU,IAAI;IACd,2CAA2C;IAC3C,UAAU,IAAI;IAEd,WAAW,QAAQ;CACpB;AAED,+DAA+D;AAC/D,oBAAY,cAAc;IACxB,iCAAiC;IACjC,KAAK,IAAI;IACT,iCAAiC;IACjC,YAAY,IAAI;IAChB,uBAAuB;IACvB,IAAI,IAAI;CACT;AAED,6BAA6B;AAC7B,oBAAY,WAAW;IACrB,IAAI,IAAI;IACR,QAAQ,IAAI;IACZ,OAAO,IAAI;IACX,OAAO,IAAI;IACX,GAAG,IAAI;IACP,KAAK,IAAI;IACT,IAAI,IAAI;IACR,YAAY,IAAI;IAChB,GAAG,IAAI;IACP,GAAG,KAAK;IACR,IAAI,QAAQ;IACZ,SAAS,QAAQ;IACjB,QAAQ,QAAQ;IAChB,WAAW,QAAQ;IACnB,QAAQ,QAAQ;IAChB,KAAK,QAAQ;IACb,KAAK,QAAQ;IACb,KAAK,QAAQ;IACb,SAAS,QAAQ;IACjB,QAAQ,QAAQ;IAChB,OAAO,QAAQ;IACf,GAAG,QAAQ;IACX,IAAI,QAAQ;IACZ,MAAM,QAAQ;IACd,QAAQ,QAAQ;IAChB,MAAM,QAAQ;IACd,IAAI,QAAQ;IACZ,IAAI,QAAQ;IACZ,IAAI,QAAQ;IACZ,IAAI,QAAQ;IACZ,MAAM,QAAQ;IACd,WAAW,QAAQ;CACpB;AAED,oBAAY,mBAAmB;IAC7B,yBAAyB;IACzB,MAAM,IAAI;IACV,8BAA8B;IAC9B,QAAQ,IAAI;CACb;AAED,oBAAY,SAAS;IACnB,IAAI,IAAI;IACR,8BAA8B;IAC9B,UAAU,IAAI;IACd,qBAAqB;IACrB,aAAa,IAAI;CAClB;AAED,oBAAY,YAAY;IACtB,4BAA4B;IAC5B,IAAI,IAAI;IACR,0BAA0B;IAC1B,GAAG,IAAI;IACP,+BAA+B;IAC/B,KAAK,IAAI;IACT,mBAAmB;IACnB,IAAI,IAAI;IACR,yBAAyB;IACzB,UAAU,IAAI;IACd,4BAA4B;IAC5B,YAAY,IAAI;CACjB;AAED,oBAAY,WAAW;IACrB,yBAAyB;IACzB,UAAU,IAAI;IACd,yBAAyB;IACzB,UAAU,IAAI;IACd,sBAAsB;IACtB,GAAG,IAAI;IACP,wBAAwB;IACxB,OAAO,IAAI;IACX,oBAAoB;IACpB,IAAI,IAAI;IACR,yBAAyB;IACzB,SAAS,IAAI;IACb,gBAAgB;IAChB,KAAK,IAAI;IACT,uBAAuB;IACvB,MAAM,IAAI;IACV,yCAAyC;IACzC,MAAM,IAAI;IACV,iBAAiB;IACjB,MAAM,KAAK;IACX,yBAAyB;IACzB,GAAG,QAAQ;IACX,kBAAkB;IAClB,IAAI,QAAQ;IACZ,MAAM,QAAQ;CACf;AAED;;;;;GAKG;AACH,oBAAY,OAAO;IACjB;;;;OAIG;IACH,WAAW,MAAM;IAEjB;;;;OAIG;IACH,cAAc,MAAM;IAEpB,+BAA+B;IAC/B,UAAU,MAAM;IAEhB,gCAAgC;IAChC,WAAW,MAAM;IAEjB;;;;;;;;OAQG;IACH,aAAa,MAAM;IAEnB;;;;;;;;;;;OAWG;IACH,YAAY,MAAM;IAElB;;;;;;;;;OASG;IACH,WAAW,MAAM;IAEjB;;;;;;;;;OASG;IACH,WAAW,MAAM;IAEjB,2BAA2B;IAC3B,SAAS,MAAM;IACf,4BAA4B;IAC5B,UAAU,MAAM;IAEhB;;;;;;;;OAQG;IACH,WAAW,MAAM;IACjB;;;;;;;;QAQI;IACJ,cAAc,MAAM;IAEpB,wBAAwB;IACxB,UAAU,MAAM;IAEhB,YAAY,MAAM;IAClB,eAAe,MAAM;IAGrB;;;OAGG;IACH,YAAY,QAAQ;IAEpB;;;;OAIG;IACH,UAAU,QAAQ;IAElB,oBAAoB;IAEpB;;;;;;;;;;OAUG;IACH,eAAe,QAAQ;IACvB;;;;;;;;;;;;OAYG;IACH,aAAa,QAAQ;IAErB;;;;;;;;;;;;OAYG;IACH,mBAAmB,QAAQ;IAC3B;;;;;OAKG;IACH,eAAe,QAAQ;IACvB;;;;OAIG;IACH,eAAe,QAAQ;IACvB;;;;OAIG;IACH,cAAc,QAAQ;IAEtB;;;;;;;OAOG;IACH,cAAc,QAAQ;IAEtB,mBAAmB,MAAM;IAEzB,qBAAqB;IACrB,UAAU,MAAM;IAChB,SAAS,MAAM;IACf,QAAQ,MAAM;IACd,SAAS,QAAQ;IACjB,QAAQ,MAAM;IACd,YAAY,MAAM;IAClB,SAAS,MAAM;IACf,cAAc,MAAM;IACpB,WAAW,MAAM;IACjB,iBAAiB,MAAM;IACvB,gBAAgB,MAAM;IACtB,YAAY,MAAM;IAClB,gBAAgB,MAAM;IACtB,IAAI,MAAM;IACV,cAAc,MAAM;IACpB,cAAc,MAAM;IACpB,KAAK,MAAM;IACX,WAAW,MAAM;IACjB,cAAc,MAAM;IACpB,YAAY,MAAM;IAClB,eAAe,MAAM;IACrB,QAAQ,MAAM;IAEd,aAAa,MAAM;IACnB,WAAW,MAAM;IACjB,WAAW,MAAM;IACjB,WAAW,MAAM;IACjB,YAAY,MAAM;IAClB,QAAQ,MAAM;IACd,sBAAsB,MAAM;IAC5B,MAAM,MAAM;IACZ,iBAAiB,MAAM;IACvB,YAAY,MAAM;IAClB,QAAQ,MAAM;IACd,aAAa,MAAM;IACnB,OAAO,MAAM;IACb,QAAQ,MAAM;IACd,UAAU,MAAM;IAChB,SAAS,MAAM;IACf,qBAAqB,MAAM;IAC3B,mBAAmB,MAAM;IACzB,eAAe,MAAM;IACrB,eAAe,MAAM;IACrB,cAAc,MAAM;IACpB,OAAO,MAAM;IACb,SAAS,MAAM;IACf,SAAS,MAAM;IAEf,gBAAgB,MAAM;IACtB,UAAU,MAAM;IAChB,cAAc,MAAM;IACpB,SAAS,MAAM;IACf,iBAAiB,MAAM;IACvB,gBAAgB,MAAM;IACtB,gBAAgB,MAAM;IACtB,cAAc,MAAM;IACpB,SAAS,MAAM;IACf,aAAa,QAAQ;IACrB,UAAU,QAAQ;IAClB,iBAAiB,QAAQ;IACzB,gBAAgB,QAAQ;IACxB,OAAO,QAAQ;IACf,WAAW,QAAQ;IACnB,YAAY,QAAQ;IACpB,UAAU,QAAQ;IAClB,KAAK,QAAQ;IACb,eAAe,QAAQ;IACvB,OAAO,QAAQ;IACf,aAAa,QAAQ;IACrB,WAAW,QAAQ;IACnB,SAAS,QAAQ;IACjB,iBAAiB,QAAQ;IACzB,WAAW,QAAQ;IACnB,IAAI,QAAQ;IACZ,UAAU,QAAQ;IAClB,GAAG,MAAM;CACV;AAED,sDAAsD;AACtD,MAAM,WAAW,WAAW;IAC1B,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IAEnC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,WAAW,GAAG,WAAW,CAAC;IAC5D,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,WAAW,GAAG,WAAW,CAAC;IAC/D,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAE/B,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,WAAW,GAAG,WAAW,CAAC;IAChE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,WAAW,GAAG,WAAW,CAAC;IAE7D,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;IACvC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IACxC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAEjC,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IACnD,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAE/B,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAInC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAE5B,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAC1C,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IACzC,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAE7B,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,oBAAY,UAAU;IAGpB;;;;;;OAMG;IACH,iBAAiB,OAAO;IACxB;;;;;;OAMG;IACH,kBAAkB,OAAO;IACzB;;;;OAIG;IACH,gBAAgB,OAAO;IAGvB;;OAEG;IACH,iBAAiB,OAAO;IACxB;;;;OAIG;IACH,sBAAsB,OAAO;IAC7B;;OAEG;IACH,mBAAmB,OAAO;IAC1B;;OAEG;IACH,mBAAmB,OAAO;IAC1B;;;OAGG;IACH,qBAAqB,OAAO;IAC5B,wBAAwB,OAAO;IAC/B;;;;OAIG;IACH,sBAAsB,OAAO;IAC7B,yBAAyB,OAAO;IAChC;;OAEG;IACH,eAAe,OAAO;IACtB;;OAEG;IACH,4BAA4B,OAAO;IACnC;;OAEG;IACH,4BAA4B,OAAO;IACnC;;OAEG;IACH,4BAA4B,OAAO;IACnC;;OAEG;IACH,4BAA4B,OAAO;IAEnC,iBAAiB,OAAO;IAGxB,sBAAsB,OAAO;IAE7B;;;;;;;;;;OAUG;IACH,kBAAkB,OAAO;IACzB;;;;;;OAMG;IACH,uBAAuB,OAAO;IAE9B;;;;;;OAMG;IACH,gBAAgB,OAAO;IACvB,gBAAgB,OAAO;IACvB,qBAAqB,OAAO;IAC5B,wBAAwB,OAAO;IAC/B,sBAAsB,OAAO;IAC7B,sBAAsB,OAAO;IAC7B,uBAAuB,OAAO;IAC9B,sBAAsB,OAAO;IAC7B,sBAAsB,OAAO;IAC7B,uBAAuB,OAAO;IAC9B,yBAAyB,OAAO;IAChC,wBAAwB,OAAO;IAC/B,4BAA4B,OAAO;IACnC,6BAA6B,OAAO;IACpC,oBAAoB,OAAO;IAC3B,mBAAmB,OAAO;IAC1B,uBAAuB,OAAO;IAC9B,wBAAwB,OAAO;IAC/B,0BAA0B,OAAO;IACjC,uBAAuB,OAAO;IAC9B,sBAAsB,OAAO;IAC7B,8BAA8B,OAAO;IACrC,4BAA4B,OAAO;IAInC;;;;;;OAMG;IACH,cAAc,OAAO;IACrB;;;OAGG;IACH,sBAAsB,OAAO;IAC7B;;OAEG;IACH,mBAAmB,OAAO;IAC1B;;;;OAIG;IACH,mBAAmB,OAAO;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAE7B,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,aAAa,CAAC;IAC9C,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,aAAa,CAAC;IAC/C,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAGtC,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACvC,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAC5C,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACzC,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACzC,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC3C,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAC9C,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAC5C,CAAC,UAAU,CAAC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAC/C,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IACrC,CAAC,UAAU,CAAC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IAClD,CAAC,UAAU,CAAC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IAClD,CAAC,UAAU,CAAC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IAClD,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAC5C,CAAC,UAAU,CAAC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IAClD,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAGlD,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACxC,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAC7C,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACtC,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACtC,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC3C,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAC9C,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAC5C,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAC5C,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAC7C,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAC5C,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAC5C,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAC7C,CAAC,UAAU,CAAC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAC/C,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAC9C,CAAC,UAAU,CAAC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IAClD,CAAC,UAAU,CAAC,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACnD,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC1C,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACzC,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAC7C,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAC9C,CAAC,UAAU,CAAC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAChD,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAC7C,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAC5C,CAAC,UAAU,CAAC,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACpD,CAAC,UAAU,CAAC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IAGlD,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACpC,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAC5C,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACzC,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC1C;AAED;;;;GAIG;AACH,oBAAY,WAAW;IACrB,MAAM,OAAO;IACb,MAAM,OAAO;IACb,SAAS,OAAO;IAChB,SAAS,OAAO;IAChB,IAAI,OAAO;IACX,GAAG,OAAO;IACV,GAAG,OAAO;CACX;AAED;;;;GAIG;AACH,oBAAY,UAAU;IACpB,KAAK,OAAO;IACZ,IAAI,OAAO;IACX,YAAY,OAAO;IACnB,oBAAoB,OAAO;IAC3B,UAAU,OAAO;IACjB,UAAU,OAAO;IACjB,IAAI,OAAO;IACX,UAAU,OAAO;IACjB,SAAS,OAAO;IAChB,WAAW,OAAO;IAClB,UAAU,OAAO;IACjB,SAAS,OAAO;IAChB,UAAU,OAAO;IACjB,MAAM,OAAO;IACb,yBAAyB,OAAO;CACjC;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CASjE,CAAC"}
|
|
1
|
+
{"version":3,"file":"tiff.tag.id.d.ts","sourceRoot":"","sources":["../../src/const/tiff.tag.id.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TiffTagValueType } from '../const/tiff.tag.value.js';
|
|
2
|
-
import type { Tiff } from '../tiff.js';
|
|
2
|
+
import type { Tiff, TiffFetchOptions } from '../tiff.js';
|
|
3
3
|
import type { DataViewOffset } from './data.view.offset.js';
|
|
4
4
|
import type { Tag, TagLazy, TagOffset } from './tiff.tag.js';
|
|
5
5
|
/**
|
|
@@ -24,13 +24,13 @@ export declare function readTypedValue<T>(tiff: Tiff, bytes: DataView, offset: n
|
|
|
24
24
|
*/
|
|
25
25
|
export declare function createTag(tiff: Tiff, view: DataViewOffset, offset: number): Tag<unknown>;
|
|
26
26
|
/** Fetch the value from a {@link TagLazy} tag */
|
|
27
|
-
export declare function fetchLazy<T>(tag: TagLazy<T>, tiff: Tiff): Promise<T>;
|
|
27
|
+
export declare function fetchLazy<T>(tag: TagLazy<T>, tiff: Tiff, options?: TiffFetchOptions): Promise<T>;
|
|
28
28
|
/**
|
|
29
29
|
* Fetch all the values from a {@link TagOffset}
|
|
30
30
|
*/
|
|
31
|
-
export declare function fetchAllOffsets(tiff: Tiff, tag: TagOffset): Promise<TagOffset['value']>;
|
|
31
|
+
export declare function fetchAllOffsets(tiff: Tiff, tag: TagOffset, options?: TiffFetchOptions): Promise<TagOffset['value']>;
|
|
32
32
|
export declare function setBytes(tag: TagOffset, view: DataViewOffset): void;
|
|
33
33
|
/** Partially fetch the values of a {@link TagOffset} and return the value for the offset */
|
|
34
|
-
export declare function getValueAt(tiff: Tiff, tag: TagOffset, index: number): Promise<number>;
|
|
34
|
+
export declare function getValueAt(tiff: Tiff, tag: TagOffset, index: number, options?: TiffFetchOptions): Promise<number>;
|
|
35
35
|
export declare function getValueAtSync(tiff: Tiff, tag: TagOffset, index: number): number | null;
|
|
36
36
|
//# sourceMappingURL=tiff.tag.factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiff.tag.factory.d.ts","sourceRoot":"","sources":["../../src/read/tiff.tag.factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"tiff.tag.factory.d.ts","sourceRoot":"","sources":["../../src/read/tiff.tag.factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAoD7D;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,gBAAgB,GACrB,CAAC,GAAG,IAAI,CAkBV;AAgDD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAqDxF;AAED,iDAAiD;AACjD,wBAAsB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC,CAQtG;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,SAAS,EACd,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAa7B;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI,CAKnE;AAED,4FAA4F;AAC5F,wBAAsB,UAAU,CAC9B,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,MAAM,CAAC,CAoBjB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUvF"}
|
|
@@ -149,12 +149,12 @@ export function createTag(tiff, view, offset) {
|
|
|
149
149
|
return { type: 'lazy', id: tagId, name: TiffTag[tagId], count: dataCount, dataOffset, dataType, tagOffset: offset };
|
|
150
150
|
}
|
|
151
151
|
/** Fetch the value from a {@link TagLazy} tag */
|
|
152
|
-
export async function fetchLazy(tag, tiff) {
|
|
152
|
+
export async function fetchLazy(tag, tiff, options) {
|
|
153
153
|
if (tag.value != null)
|
|
154
154
|
return tag.value;
|
|
155
155
|
const dataTypeSize = getTiffTagSize(tag.dataType);
|
|
156
156
|
const dataLength = dataTypeSize * tag.count;
|
|
157
|
-
const bytes = await tiff.source.fetch(tag.dataOffset, dataLength);
|
|
157
|
+
const bytes = await tiff.source.fetch(tag.dataOffset, dataLength, options);
|
|
158
158
|
const view = new DataView(bytes);
|
|
159
159
|
tag.value = readValue(tiff, tag.id, view, 0, tag.dataType, tag.count);
|
|
160
160
|
return tag.value;
|
|
@@ -162,10 +162,10 @@ export async function fetchLazy(tag, tiff) {
|
|
|
162
162
|
/**
|
|
163
163
|
* Fetch all the values from a {@link TagOffset}
|
|
164
164
|
*/
|
|
165
|
-
export async function fetchAllOffsets(tiff, tag) {
|
|
165
|
+
export async function fetchAllOffsets(tiff, tag, options) {
|
|
166
166
|
const dataTypeSize = getTiffTagSize(tag.dataType);
|
|
167
167
|
if (tag.view == null) {
|
|
168
|
-
const bytes = await tiff.source.fetch(tag.dataOffset, dataTypeSize * tag.count);
|
|
168
|
+
const bytes = await tiff.source.fetch(tag.dataOffset, dataTypeSize * tag.count, options);
|
|
169
169
|
tag.view = new DataView(bytes);
|
|
170
170
|
tag.view.sourceOffset = tag.dataOffset;
|
|
171
171
|
}
|
|
@@ -181,14 +181,14 @@ export function setBytes(tag, view) {
|
|
|
181
181
|
tag.view.sourceOffset = tag.dataOffset;
|
|
182
182
|
}
|
|
183
183
|
/** Partially fetch the values of a {@link TagOffset} and return the value for the offset */
|
|
184
|
-
export async function getValueAt(tiff, tag, index) {
|
|
184
|
+
export async function getValueAt(tiff, tag, index, options) {
|
|
185
185
|
if (index > tag.count || index < 0)
|
|
186
186
|
throw new Error('TagOffset: out of bounds :' + index);
|
|
187
187
|
if (tag.value[index] != null)
|
|
188
188
|
return tag.value[index];
|
|
189
189
|
const dataTypeSize = getTiffTagSize(tag.dataType);
|
|
190
190
|
if (tag.view == null) {
|
|
191
|
-
const bytes = await tiff.source.fetch(tag.dataOffset + index * dataTypeSize, dataTypeSize);
|
|
191
|
+
const bytes = await tiff.source.fetch(tag.dataOffset + index * dataTypeSize, dataTypeSize, options);
|
|
192
192
|
const view = new DataView(bytes);
|
|
193
193
|
// Skip type conversion to array by using undefined tiff tag id
|
|
194
194
|
const value = readValue(tiff, undefined, view, 0, tag.dataType, 1);
|
package/build/tiff.d.ts
CHANGED
|
@@ -7,6 +7,9 @@ export interface TiffCreationOptions {
|
|
|
7
7
|
/** When initializing the tiff, read data in blocks of this size (in KB) */
|
|
8
8
|
defaultReadSize: number;
|
|
9
9
|
}
|
|
10
|
+
export interface TiffFetchOptions {
|
|
11
|
+
signal?: AbortSignal;
|
|
12
|
+
}
|
|
10
13
|
export declare class Tiff {
|
|
11
14
|
/** Read 16KB blocks at a time */
|
|
12
15
|
static DefaultReadSize: number;
|
|
@@ -30,14 +33,14 @@ export declare class Tiff {
|
|
|
30
33
|
/** A Tiff constructed from a source will not be pre-initialized with {@link init}. */
|
|
31
34
|
constructor(source: Source, options?: TiffCreationOptions);
|
|
32
35
|
/** Create a tiff and initialize it by reading the tiff headers */
|
|
33
|
-
static create(source: Source, options?: TiffCreationOptions): Promise<Tiff>;
|
|
36
|
+
static create(source: Source, options?: TiffCreationOptions & TiffFetchOptions): Promise<Tiff>;
|
|
34
37
|
/**
|
|
35
38
|
* Initialize the tiff loading in the header and all image headers.
|
|
36
39
|
*
|
|
37
40
|
* This is only required if the Tiff was created with the constructor, if you
|
|
38
41
|
* used {@link create} this will have already been called.
|
|
39
42
|
*/
|
|
40
|
-
init(): Promise<Tiff>;
|
|
43
|
+
init(options?: TiffFetchOptions): Promise<Tiff>;
|
|
41
44
|
/**
|
|
42
45
|
* Find a image which has a resolution similar to the provided resolution
|
|
43
46
|
*
|
package/build/tiff.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiff.d.ts","sourceRoot":"","sources":["../src/tiff.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAItD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,MAAM,WAAW,mBAAmB;IAClC,2EAA2E;IAC3E,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,IAAI;IACf,iCAAiC;IACjC,MAAM,CAAC,eAAe,SAAa;IACnC,iCAAiC;IACjC,eAAe,SAAwB;IACvC,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,OAAO,cAAoB;IAC3B,0CAA0C;IAC1C,MAAM,EAAE,SAAS,EAAE,CAAM;IACzB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,4CAA4C;IAC5C,SAAS,EAAE,aAAa,CAAiB;IACzC,8CAA8C;IAC9C,cAAc,UAAS;IACvB,6BAA6B;IAC7B,aAAa,UAAS;IAEtB,OAAO,CAAC,YAAY,CAAC,CAAgB;IAErC,sFAAsF;gBAC1E,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,mBAA+D;IAKpG,kEAAkE;IAClE,MAAM,CAAC,MAAM,CACX,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,
|
|
1
|
+
{"version":3,"file":"tiff.d.ts","sourceRoot":"","sources":["../src/tiff.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAItD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,MAAM,WAAW,mBAAmB;IAClC,2EAA2E;IAC3E,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,qBAAa,IAAI;IACf,iCAAiC;IACjC,MAAM,CAAC,eAAe,SAAa;IACnC,iCAAiC;IACjC,eAAe,SAAwB;IACvC,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,OAAO,cAAoB;IAC3B,0CAA0C;IAC1C,MAAM,EAAE,SAAS,EAAE,CAAM;IACzB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,4CAA4C;IAC5C,SAAS,EAAE,aAAa,CAAiB;IACzC,8CAA8C;IAC9C,cAAc,UAAS;IACvB,6BAA6B;IAC7B,aAAa,UAAS;IAEtB,OAAO,CAAC,YAAY,CAAC,CAAgB;IAErC,sFAAsF;gBAC1E,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,mBAA+D;IAKpG,kEAAkE;IAClE,MAAM,CAAC,MAAM,CACX,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,mBAAmB,GAAG,gBAA4D,GAC1F,OAAO,CAAC,IAAI,CAAC;IAIhB;;;;;OAKG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C;;;;OAIG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS;IAoBnD,qEAAqE;YACvD,UAAU;IAiExB;;;;;OAKG;IACH,OAAO,CAAC,OAAO;CAsBhB"}
|
package/build/tiff.image.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { TiffMimeType } from './const/tiff.mime.js';
|
|
|
2
2
|
import type { TiffTagGeoType, TiffTagType } from './const/tiff.tag.id.js';
|
|
3
3
|
import { Compression, TiffTag, TiffTagGeo } from './const/tiff.tag.id.js';
|
|
4
4
|
import type { Tag, TagInline, TagOffset } from './read/tiff.tag.js';
|
|
5
|
-
import type { Tiff } from './tiff.js';
|
|
5
|
+
import type { Tiff, TiffFetchOptions } from './tiff.js';
|
|
6
6
|
import type { BoundingBox, Size } from './vector.js';
|
|
7
7
|
/** Invalid EPSG code */
|
|
8
8
|
export declare const InvalidProjectionCode = 32767;
|
|
@@ -49,7 +49,7 @@ export declare class TiffImage {
|
|
|
49
49
|
*
|
|
50
50
|
* @param loadGeoTags Whether to load the GeoKeyDirectory and unpack it
|
|
51
51
|
*/
|
|
52
|
-
init(loadGeoTags?: boolean): Promise<void>;
|
|
52
|
+
init(loadGeoTags?: boolean, options?: TiffFetchOptions): Promise<void>;
|
|
53
53
|
/**
|
|
54
54
|
* Get the value of a TiffTag if it has been loaded, null otherwise.
|
|
55
55
|
*
|
|
@@ -84,7 +84,7 @@ export declare class TiffImage {
|
|
|
84
84
|
*
|
|
85
85
|
* @param tag tag to fetch
|
|
86
86
|
*/
|
|
87
|
-
fetch<T extends keyof TiffTagType>(tag: T): Promise<TiffTagType[T] | null>;
|
|
87
|
+
fetch<T extends keyof TiffTagType>(tag: T, options?: TiffFetchOptions): Promise<TiffTagType[T] | null>;
|
|
88
88
|
/**
|
|
89
89
|
* Get the associated TiffTagGeo
|
|
90
90
|
*
|
|
@@ -192,16 +192,14 @@ export declare class TiffImage {
|
|
|
192
192
|
*
|
|
193
193
|
* @param index Strip index to read
|
|
194
194
|
*/
|
|
195
|
-
getStrip(index: number): Promise<{
|
|
195
|
+
getStrip(index: number, options?: TiffFetchOptions): Promise<{
|
|
196
196
|
mimeType: TiffMimeType;
|
|
197
197
|
bytes: ArrayBuffer;
|
|
198
198
|
} | null>;
|
|
199
199
|
/** The jpeg header is stored in the IFD, read the JPEG header and adjust the byte array to include it */
|
|
200
200
|
getJpegHeader(bytes: ArrayBuffer): ArrayBuffer;
|
|
201
201
|
/** Read image bytes at the given offset */
|
|
202
|
-
getBytes(offset: number, byteCount: number, options?: {
|
|
203
|
-
signal?: AbortSignal;
|
|
204
|
-
}): Promise<{
|
|
202
|
+
getBytes(offset: number, byteCount: number, options?: TiffFetchOptions): Promise<{
|
|
205
203
|
mimeType: TiffMimeType;
|
|
206
204
|
bytes: ArrayBuffer;
|
|
207
205
|
compression: Compression;
|
|
@@ -214,9 +212,7 @@ export declare class TiffImage {
|
|
|
214
212
|
* @param x Tile x offset
|
|
215
213
|
* @param y Tile y offset
|
|
216
214
|
*/
|
|
217
|
-
getTile(x: number, y: number, options?: {
|
|
218
|
-
signal?: AbortSignal;
|
|
219
|
-
}): Promise<{
|
|
215
|
+
getTile(x: number, y: number, options?: TiffFetchOptions): Promise<{
|
|
220
216
|
mimeType: TiffMimeType;
|
|
221
217
|
bytes: ArrayBuffer;
|
|
222
218
|
compression: Compression;
|
|
@@ -232,7 +228,7 @@ export declare class TiffImage {
|
|
|
232
228
|
*
|
|
233
229
|
* @returns if the tile exists and has data
|
|
234
230
|
*/
|
|
235
|
-
hasTile(x: number, y: number): Promise<boolean>;
|
|
231
|
+
hasTile(x: number, y: number, options?: TiffFetchOptions): Promise<boolean>;
|
|
236
232
|
/**
|
|
237
233
|
* Load the offset and byteCount of a tile
|
|
238
234
|
*
|
|
@@ -241,7 +237,7 @@ export declare class TiffImage {
|
|
|
241
237
|
* @param index index in the tile array
|
|
242
238
|
* @returns Offset and byteCount for the tile
|
|
243
239
|
*/
|
|
244
|
-
getTileSize(index: number): Promise<{
|
|
240
|
+
getTileSize(index: number, options?: TiffFetchOptions): Promise<{
|
|
245
241
|
offset: number;
|
|
246
242
|
imageSize: number;
|
|
247
243
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiff.image.d.ts","sourceRoot":"","sources":["../src/tiff.image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmD,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACrG,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAA8B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEtG,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"tiff.image.d.ts","sourceRoot":"","sources":["../src/tiff.image.ts"],"names":[],"mappings":"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"}
|
package/build/tiff.image.js
CHANGED
|
@@ -42,14 +42,14 @@ export class TiffImage {
|
|
|
42
42
|
*
|
|
43
43
|
* @param loadGeoTags Whether to load the GeoKeyDirectory and unpack it
|
|
44
44
|
*/
|
|
45
|
-
async init(loadGeoTags = true) {
|
|
45
|
+
async init(loadGeoTags = true, options) {
|
|
46
46
|
const requiredTags = [];
|
|
47
47
|
ImportantTags.forEach((tag) => {
|
|
48
|
-
requiredTags.push(this.fetch(tag));
|
|
48
|
+
requiredTags.push(this.fetch(tag, options));
|
|
49
49
|
});
|
|
50
50
|
if (loadGeoTags) {
|
|
51
51
|
ImportantGeoTags.forEach((tag) => {
|
|
52
|
-
requiredTags.push(this.fetch(tag));
|
|
52
|
+
requiredTags.push(this.fetch(tag, options));
|
|
53
53
|
});
|
|
54
54
|
}
|
|
55
55
|
await Promise.all(requiredTags);
|
|
@@ -100,18 +100,18 @@ export class TiffImage {
|
|
|
100
100
|
*
|
|
101
101
|
* @param tag tag to fetch
|
|
102
102
|
*/
|
|
103
|
-
async fetch(tag) {
|
|
103
|
+
async fetch(tag, options) {
|
|
104
104
|
const sourceTag = this.tags.get(tag);
|
|
105
105
|
if (sourceTag == null)
|
|
106
106
|
return null;
|
|
107
107
|
if (sourceTag.type === 'inline')
|
|
108
108
|
return sourceTag.value;
|
|
109
109
|
if (sourceTag.type === 'lazy')
|
|
110
|
-
return fetchLazy(sourceTag, this.tiff);
|
|
110
|
+
return fetchLazy(sourceTag, this.tiff, options);
|
|
111
111
|
if (sourceTag.isLoaded)
|
|
112
112
|
return sourceTag.value;
|
|
113
113
|
if (sourceTag.type === 'offset')
|
|
114
|
-
return fetchAllOffsets(this.tiff, sourceTag);
|
|
114
|
+
return fetchAllOffsets(this.tiff, sourceTag, options);
|
|
115
115
|
throw new Error('Cannot fetch:' + tag);
|
|
116
116
|
}
|
|
117
117
|
/**
|
|
@@ -138,7 +138,7 @@ export class TiffImage {
|
|
|
138
138
|
const tag = this.tags.get(TiffTag.GdalNoData);
|
|
139
139
|
if (tag == null)
|
|
140
140
|
return null;
|
|
141
|
-
if (tag.value)
|
|
141
|
+
if (tag.value != null)
|
|
142
142
|
return Number(tag.value);
|
|
143
143
|
throw new Error('GdalNoData tag is not loaded');
|
|
144
144
|
}
|
|
@@ -398,7 +398,7 @@ export class TiffImage {
|
|
|
398
398
|
*
|
|
399
399
|
* @param index Strip index to read
|
|
400
400
|
*/
|
|
401
|
-
async getStrip(index) {
|
|
401
|
+
async getStrip(index, options) {
|
|
402
402
|
if (this.isTiled())
|
|
403
403
|
throw new Error('Cannot read stripes, tiff is tiled: ' + index);
|
|
404
404
|
const byteCounts = this.tags.get(TiffTag.StripByteCounts);
|
|
@@ -406,10 +406,10 @@ export class TiffImage {
|
|
|
406
406
|
if (index >= byteCounts.count)
|
|
407
407
|
throw new Error('Cannot read strip, index out of bounds');
|
|
408
408
|
const [byteCount, offset] = await Promise.all([
|
|
409
|
-
getOffset(this.tiff, offsets, index),
|
|
410
|
-
getOffset(this.tiff, byteCounts, index),
|
|
409
|
+
getOffset(this.tiff, offsets, index, options),
|
|
410
|
+
getOffset(this.tiff, byteCounts, index, options),
|
|
411
411
|
]);
|
|
412
|
-
return this.getBytes(byteCount, offset);
|
|
412
|
+
return this.getBytes(byteCount, offset, options);
|
|
413
413
|
}
|
|
414
414
|
/** The jpeg header is stored in the IFD, read the JPEG header and adjust the byte array to include it */
|
|
415
415
|
getJpegHeader(bytes) {
|
|
@@ -464,7 +464,7 @@ export class TiffImage {
|
|
|
464
464
|
const totalTiles = nxTiles * nyTiles;
|
|
465
465
|
if (idx >= totalTiles)
|
|
466
466
|
throw new Error(`Tile index is outside of tile range: ${idx} >= ${totalTiles}`);
|
|
467
|
-
const { offset, imageSize } = await this.getTileSize(idx);
|
|
467
|
+
const { offset, imageSize } = await this.getTileSize(idx, options);
|
|
468
468
|
return this.getBytes(offset, imageSize, options);
|
|
469
469
|
}
|
|
470
470
|
/**
|
|
@@ -478,7 +478,7 @@ export class TiffImage {
|
|
|
478
478
|
*
|
|
479
479
|
* @returns if the tile exists and has data
|
|
480
480
|
*/
|
|
481
|
-
async hasTile(x, y) {
|
|
481
|
+
async hasTile(x, y, options) {
|
|
482
482
|
const tiles = this.tileSize;
|
|
483
483
|
const size = this.size;
|
|
484
484
|
if (tiles == null)
|
|
@@ -489,7 +489,7 @@ export class TiffImage {
|
|
|
489
489
|
if (x >= nxTiles || y >= nyTiles)
|
|
490
490
|
return false;
|
|
491
491
|
const idx = y * nxTiles + x;
|
|
492
|
-
const ret = await this.getTileSize(idx);
|
|
492
|
+
const ret = await this.getTileSize(idx, options);
|
|
493
493
|
return ret.offset > 0;
|
|
494
494
|
}
|
|
495
495
|
/**
|
|
@@ -500,7 +500,7 @@ export class TiffImage {
|
|
|
500
500
|
* @param index index in the tile array
|
|
501
501
|
* @returns Offset and byteCount for the tile
|
|
502
502
|
*/
|
|
503
|
-
async getTileSize(index) {
|
|
503
|
+
async getTileSize(index, options) {
|
|
504
504
|
// If both the tile offset and tile byte counts are loaded,
|
|
505
505
|
// we can get the offset and byte count synchronously without needing to fetch any additional data
|
|
506
506
|
const byteCounts = this.tags.get(TiffTag.TileByteCounts);
|
|
@@ -512,29 +512,29 @@ export class TiffImage {
|
|
|
512
512
|
// the few bytes leading up to the tile
|
|
513
513
|
const leaderBytes = this.tiff.options?.tileLeaderByteSize;
|
|
514
514
|
if (leaderBytes) {
|
|
515
|
-
const offset = tileOffset ?? (await getOffset(this.tiff, this.tileOffset, index));
|
|
515
|
+
const offset = tileOffset ?? (await getOffset(this.tiff, this.tileOffset, index, options));
|
|
516
516
|
// Sparse tiff no data found
|
|
517
517
|
if (offset === 0)
|
|
518
518
|
return { offset: 0, imageSize: 0 };
|
|
519
519
|
// This fetch will generally load in the bytes needed for the image too
|
|
520
520
|
// provided the image size is less than the size of a chunk
|
|
521
|
-
const bytes = await this.tiff.source.fetch(offset - leaderBytes, leaderBytes);
|
|
521
|
+
const bytes = await this.tiff.source.fetch(offset - leaderBytes, leaderBytes, options);
|
|
522
522
|
return { offset, imageSize: getUint(new DataView(bytes), 0, leaderBytes, this.tiff.isLittleEndian) };
|
|
523
523
|
}
|
|
524
524
|
if (byteCounts == null)
|
|
525
525
|
throw new Error('No tile byte counts found');
|
|
526
526
|
const [offset, imageSize] = await Promise.all([
|
|
527
|
-
tileOffset ?? getOffset(this.tiff, this.tileOffset, index),
|
|
528
|
-
tileSize ?? getOffset(this.tiff, byteCounts, index),
|
|
527
|
+
tileOffset ?? getOffset(this.tiff, this.tileOffset, index, options),
|
|
528
|
+
tileSize ?? getOffset(this.tiff, byteCounts, index, options),
|
|
529
529
|
]);
|
|
530
530
|
return { offset, imageSize };
|
|
531
531
|
}
|
|
532
532
|
}
|
|
533
|
-
function getOffset(tiff, x, index) {
|
|
533
|
+
function getOffset(tiff, x, index, options) {
|
|
534
534
|
const val = getOffsetSync(tiff, x, index);
|
|
535
535
|
if (val != null)
|
|
536
536
|
return Promise.resolve(val);
|
|
537
|
-
return getValueAt(tiff, x, index);
|
|
537
|
+
return getValueAt(tiff, x, index, options);
|
|
538
538
|
}
|
|
539
539
|
function getOffsetSync(tiff, x, index) {
|
|
540
540
|
if (index < 0) {
|
package/build/tiff.js
CHANGED
|
@@ -34,7 +34,7 @@ export class Tiff {
|
|
|
34
34
|
}
|
|
35
35
|
/** Create a tiff and initialize it by reading the tiff headers */
|
|
36
36
|
static create(source, options = { defaultReadSize: Tiff.DefaultReadSize }) {
|
|
37
|
-
return new Tiff(source, options).init();
|
|
37
|
+
return new Tiff(source, options).init(options);
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
40
40
|
* Initialize the tiff loading in the header and all image headers.
|
|
@@ -42,10 +42,12 @@ export class Tiff {
|
|
|
42
42
|
* This is only required if the Tiff was created with the constructor, if you
|
|
43
43
|
* used {@link create} this will have already been called.
|
|
44
44
|
*/
|
|
45
|
-
init() {
|
|
45
|
+
init(options) {
|
|
46
|
+
if (this.isInitialized)
|
|
47
|
+
return Promise.resolve(this);
|
|
46
48
|
if (this._initPromise)
|
|
47
49
|
return this._initPromise;
|
|
48
|
-
this._initPromise = this.readHeader();
|
|
50
|
+
this._initPromise = this.readHeader(options);
|
|
49
51
|
return this._initPromise;
|
|
50
52
|
}
|
|
51
53
|
/**
|
|
@@ -71,11 +73,11 @@ export class Tiff {
|
|
|
71
73
|
return firstImage;
|
|
72
74
|
}
|
|
73
75
|
/** Read the Starting header and all Image headers from the source */
|
|
74
|
-
async readHeader() {
|
|
76
|
+
async readHeader(options) {
|
|
75
77
|
if (this.isInitialized)
|
|
76
78
|
return this;
|
|
77
79
|
// limit the read to the size of the file if it is known, for small tiffs
|
|
78
|
-
const bytes = new DataView(await this.source.fetch(0, getMaxLength(this.source, 0, this.defaultReadSize)));
|
|
80
|
+
const bytes = new DataView(await this.source.fetch(0, getMaxLength(this.source, 0, this.defaultReadSize), options));
|
|
79
81
|
if (bytes.byteLength === 0)
|
|
80
82
|
throw new Error('Unable to read empty tiff');
|
|
81
83
|
bytes.sourceOffset = 0;
|
|
@@ -117,13 +119,13 @@ export class Tiff {
|
|
|
117
119
|
// Ensure at least 1KB near at the IFD offset is ready for reading
|
|
118
120
|
// TODO is 1KB enough, most IFD entries are in the order of 100-300 bytes
|
|
119
121
|
if (!hasBytes(lastView, nextOffsetIfd, 1024)) {
|
|
120
|
-
const bytes = await this.source.fetch(nextOffsetIfd, getMaxLength(this.source, nextOffsetIfd, this.defaultReadSize));
|
|
122
|
+
const bytes = await this.source.fetch(nextOffsetIfd, getMaxLength(this.source, nextOffsetIfd, this.defaultReadSize), options);
|
|
121
123
|
lastView = new DataView(bytes);
|
|
122
124
|
lastView.sourceOffset = nextOffsetIfd;
|
|
123
125
|
}
|
|
124
126
|
nextOffsetIfd = this.readIfd(nextOffsetIfd, lastView);
|
|
125
127
|
}
|
|
126
|
-
await Promise.all(this.images.map((i) => i.init()));
|
|
128
|
+
await Promise.all(this.images.map((i) => i.init(true, options)));
|
|
127
129
|
this.isInitialized = true;
|
|
128
130
|
return this;
|
|
129
131
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cogeotiff/core",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.5.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/blacha/cogeotiff.git",
|
|
@@ -17,11 +17,12 @@
|
|
|
17
17
|
"scripts": {
|
|
18
18
|
"test": "node --test \"build/**/*.test.js\""
|
|
19
19
|
},
|
|
20
|
+
"dependencies": {},
|
|
20
21
|
"devDependencies": {
|
|
21
22
|
"@types/node": "^20.0.0"
|
|
22
23
|
},
|
|
23
24
|
"publishConfig": {
|
|
24
25
|
"access": "public"
|
|
25
26
|
},
|
|
26
|
-
"gitHead": "
|
|
27
|
+
"gitHead": "c489ebab2136a779a705bf1dedebbc250e17a747"
|
|
27
28
|
}
|
|
@@ -7,6 +7,9 @@ import { TestFileSource } from '../__benchmark__/source.file.js';
|
|
|
7
7
|
import { SourceMemory } from '../__benchmark__/source.memory.js';
|
|
8
8
|
import { TiffMimeType } from '../const/tiff.mime.js';
|
|
9
9
|
import { Photometric, TiffTag } from '../const/tiff.tag.id.js';
|
|
10
|
+
import { TiffTagValueType } from '../const/tiff.tag.value.js';
|
|
11
|
+
import type { Tag } from '../read/tiff.tag.js';
|
|
12
|
+
import { TiffImage } from '../tiff.image.js';
|
|
10
13
|
import { Tiff } from '../tiff.js';
|
|
11
14
|
import { ByteSize } from '../util/bytes.js';
|
|
12
15
|
|
|
@@ -214,3 +217,61 @@ describe('CogStrip', () => {
|
|
|
214
217
|
assert.equal(stripB?.bytes.byteLength, 152);
|
|
215
218
|
});
|
|
216
219
|
});
|
|
220
|
+
|
|
221
|
+
describe('TiffImage.noData', () => {
|
|
222
|
+
/** Create a TiffImage with a specific GdalNoData tag value for testing */
|
|
223
|
+
function imageWithNoData(value: string): TiffImage {
|
|
224
|
+
const tags = new Map<TiffTag, Tag>();
|
|
225
|
+
tags.set(TiffTag.GdalNoData, {
|
|
226
|
+
id: TiffTag.GdalNoData,
|
|
227
|
+
name: 'GdalNoData',
|
|
228
|
+
tagOffset: 0,
|
|
229
|
+
count: 1,
|
|
230
|
+
dataType: TiffTagValueType.Ascii,
|
|
231
|
+
type: 'inline',
|
|
232
|
+
value,
|
|
233
|
+
});
|
|
234
|
+
return new TiffImage(null as unknown as Tiff, 0, tags);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
it('should return null when GdalNoData tag is absent', () => {
|
|
238
|
+
const img = new TiffImage(null as unknown as Tiff, 0, new Map());
|
|
239
|
+
assert.equal(img.noData, null);
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
it('should parse a negative nodata value', () => {
|
|
243
|
+
const img = imageWithNoData('-9999');
|
|
244
|
+
assert.equal(img.noData, -9999);
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
it('should parse nodata value of "0" (falsy string)', () => {
|
|
248
|
+
const img = imageWithNoData('0');
|
|
249
|
+
assert.equal(img.noData, 0);
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
it('should parse a positive nodata value', () => {
|
|
253
|
+
const img = imageWithNoData('255');
|
|
254
|
+
assert.equal(img.noData, 255);
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
it('should parse a floating point nodata value', () => {
|
|
258
|
+
const img = imageWithNoData('-3.4028234663852886e+38');
|
|
259
|
+
assert.equal(img.noData, -3.4028234663852886e38);
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
it('should throw when lazy tag value is undefined (not yet fetched)', () => {
|
|
263
|
+
const tags = new Map<TiffTag, Tag>();
|
|
264
|
+
tags.set(TiffTag.GdalNoData, {
|
|
265
|
+
id: TiffTag.GdalNoData,
|
|
266
|
+
name: 'GdalNoData',
|
|
267
|
+
tagOffset: 0,
|
|
268
|
+
count: 1,
|
|
269
|
+
dataType: TiffTagValueType.Ascii,
|
|
270
|
+
type: 'lazy',
|
|
271
|
+
dataOffset: 0,
|
|
272
|
+
value: undefined,
|
|
273
|
+
});
|
|
274
|
+
const img = new TiffImage(null as unknown as Tiff, 0, tags);
|
|
275
|
+
assert.throws(() => img.noData, /GdalNoData tag is not loaded/);
|
|
276
|
+
});
|
|
277
|
+
});
|
package/src/const/tiff.tag.id.ts
CHANGED
|
@@ -456,9 +456,30 @@ export interface TiffTagType {
|
|
|
456
456
|
[TiffTag.SampleFormat]: SampleFormat[];
|
|
457
457
|
[TiffTag.GdalMetadata]: string;
|
|
458
458
|
[TiffTag.GdalNoData]: string;
|
|
459
|
-
[
|
|
459
|
+
// Always [ScaleX, ScaleY, ScaleZ]
|
|
460
|
+
// https://web.archive.org/web/20240329145238/https://www.awaresystems.be/imaging/tiff/tifftags/modelpixelscaletag.html
|
|
461
|
+
[TiffTag.ModelPixelScale]: [scaleX: number, scaleY: number, scaleZ: number];
|
|
460
462
|
[TiffTag.ModelTiePoint]: number[];
|
|
461
|
-
|
|
463
|
+
// Always 16 numbers
|
|
464
|
+
// https://web.archive.org/web/20240329145255/https://www.awaresystems.be/imaging/tiff/tifftags/modeltransformationtag.html
|
|
465
|
+
[TiffTag.ModelTransformation]: [
|
|
466
|
+
number,
|
|
467
|
+
number,
|
|
468
|
+
number,
|
|
469
|
+
number,
|
|
470
|
+
number,
|
|
471
|
+
number,
|
|
472
|
+
number,
|
|
473
|
+
number,
|
|
474
|
+
number,
|
|
475
|
+
number,
|
|
476
|
+
number,
|
|
477
|
+
number,
|
|
478
|
+
number,
|
|
479
|
+
number,
|
|
480
|
+
number,
|
|
481
|
+
number,
|
|
482
|
+
];
|
|
462
483
|
[TiffTag.GeoKeyDirectory]: number[];
|
|
463
484
|
[TiffTag.GeoDoubleParams]: number[];
|
|
464
485
|
[TiffTag.GeoAsciiParams]: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-unsafe-enum-comparison */
|
|
2
2
|
import { TiffTag, TiffTagConvertArray } from '../const/tiff.tag.id.js';
|
|
3
3
|
import { TiffTagValueType } from '../const/tiff.tag.value.js';
|
|
4
|
-
import type { Tiff } from '../tiff.js';
|
|
4
|
+
import type { Tiff, TiffFetchOptions } from '../tiff.js';
|
|
5
5
|
import { getUint, getUint64 } from '../util/bytes.js';
|
|
6
6
|
import type { DataViewOffset } from './data.view.offset.js';
|
|
7
7
|
import { hasBytes } from './data.view.offset.js';
|
|
@@ -205,11 +205,11 @@ export function createTag(tiff: Tiff, view: DataViewOffset, offset: number): Tag
|
|
|
205
205
|
}
|
|
206
206
|
|
|
207
207
|
/** Fetch the value from a {@link TagLazy} tag */
|
|
208
|
-
export async function fetchLazy<T>(tag: TagLazy<T>, tiff: Tiff): Promise<T> {
|
|
208
|
+
export async function fetchLazy<T>(tag: TagLazy<T>, tiff: Tiff, options?: TiffFetchOptions): Promise<T> {
|
|
209
209
|
if (tag.value != null) return tag.value;
|
|
210
210
|
const dataTypeSize = getTiffTagSize(tag.dataType);
|
|
211
211
|
const dataLength = dataTypeSize * tag.count;
|
|
212
|
-
const bytes = await tiff.source.fetch(tag.dataOffset, dataLength);
|
|
212
|
+
const bytes = await tiff.source.fetch(tag.dataOffset, dataLength, options);
|
|
213
213
|
const view = new DataView(bytes);
|
|
214
214
|
tag.value = readValue(tiff, tag.id, view, 0, tag.dataType, tag.count);
|
|
215
215
|
return tag.value as T;
|
|
@@ -218,11 +218,15 @@ export async function fetchLazy<T>(tag: TagLazy<T>, tiff: Tiff): Promise<T> {
|
|
|
218
218
|
/**
|
|
219
219
|
* Fetch all the values from a {@link TagOffset}
|
|
220
220
|
*/
|
|
221
|
-
export async function fetchAllOffsets(
|
|
221
|
+
export async function fetchAllOffsets(
|
|
222
|
+
tiff: Tiff,
|
|
223
|
+
tag: TagOffset,
|
|
224
|
+
options?: TiffFetchOptions,
|
|
225
|
+
): Promise<TagOffset['value']> {
|
|
222
226
|
const dataTypeSize = getTiffTagSize(tag.dataType);
|
|
223
227
|
|
|
224
228
|
if (tag.view == null) {
|
|
225
|
-
const bytes = await tiff.source.fetch(tag.dataOffset, dataTypeSize * tag.count);
|
|
229
|
+
const bytes = await tiff.source.fetch(tag.dataOffset, dataTypeSize * tag.count, options);
|
|
226
230
|
tag.view = new DataView(bytes) as DataViewOffset;
|
|
227
231
|
tag.view.sourceOffset = tag.dataOffset;
|
|
228
232
|
}
|
|
@@ -241,13 +245,18 @@ export function setBytes(tag: TagOffset, view: DataViewOffset): void {
|
|
|
241
245
|
}
|
|
242
246
|
|
|
243
247
|
/** Partially fetch the values of a {@link TagOffset} and return the value for the offset */
|
|
244
|
-
export async function getValueAt(
|
|
248
|
+
export async function getValueAt(
|
|
249
|
+
tiff: Tiff,
|
|
250
|
+
tag: TagOffset,
|
|
251
|
+
index: number,
|
|
252
|
+
options?: TiffFetchOptions,
|
|
253
|
+
): Promise<number> {
|
|
245
254
|
if (index > tag.count || index < 0) throw new Error('TagOffset: out of bounds :' + index);
|
|
246
255
|
if (tag.value[index] != null) return tag.value[index];
|
|
247
256
|
const dataTypeSize = getTiffTagSize(tag.dataType);
|
|
248
257
|
|
|
249
258
|
if (tag.view == null) {
|
|
250
|
-
const bytes = await tiff.source.fetch(tag.dataOffset + index * dataTypeSize, dataTypeSize);
|
|
259
|
+
const bytes = await tiff.source.fetch(tag.dataOffset + index * dataTypeSize, dataTypeSize, options);
|
|
251
260
|
const view = new DataView(bytes);
|
|
252
261
|
// Skip type conversion to array by using undefined tiff tag id
|
|
253
262
|
const value = readValue(tiff, undefined, view, 0, tag.dataType, 1);
|
package/src/tiff.image.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { TiffTagGeoType, TiffTagType } from './const/tiff.tag.id.js';
|
|
|
3
3
|
import { Compression, ModelTypeCode, SubFileType, TiffTag, TiffTagGeo } from './const/tiff.tag.id.js';
|
|
4
4
|
import { fetchAllOffsets, fetchLazy, getValueAt, getValueAtSync } from './read/tiff.tag.factory.js';
|
|
5
5
|
import type { Tag, TagInline, TagOffset } from './read/tiff.tag.js';
|
|
6
|
-
import type { Tiff } from './tiff.js';
|
|
6
|
+
import type { Tiff, TiffFetchOptions } from './tiff.js';
|
|
7
7
|
import { getUint } from './util/bytes.js';
|
|
8
8
|
import type { BoundingBox, Size } from './vector.js';
|
|
9
9
|
|
|
@@ -72,15 +72,15 @@ export class TiffImage {
|
|
|
72
72
|
*
|
|
73
73
|
* @param loadGeoTags Whether to load the GeoKeyDirectory and unpack it
|
|
74
74
|
*/
|
|
75
|
-
async init(loadGeoTags = true): Promise<void> {
|
|
75
|
+
async init(loadGeoTags = true, options?: TiffFetchOptions): Promise<void> {
|
|
76
76
|
const requiredTags: Promise<unknown>[] = [];
|
|
77
77
|
ImportantTags.forEach((tag) => {
|
|
78
|
-
requiredTags.push(this.fetch(tag));
|
|
78
|
+
requiredTags.push(this.fetch(tag, options));
|
|
79
79
|
});
|
|
80
80
|
|
|
81
81
|
if (loadGeoTags) {
|
|
82
82
|
ImportantGeoTags.forEach((tag) => {
|
|
83
|
-
requiredTags.push(this.fetch(tag));
|
|
83
|
+
requiredTags.push(this.fetch(tag, options));
|
|
84
84
|
});
|
|
85
85
|
}
|
|
86
86
|
|
|
@@ -132,13 +132,13 @@ export class TiffImage {
|
|
|
132
132
|
*
|
|
133
133
|
* @param tag tag to fetch
|
|
134
134
|
*/
|
|
135
|
-
public async fetch<T extends keyof TiffTagType>(tag: T): Promise<TiffTagType[T] | null> {
|
|
135
|
+
public async fetch<T extends keyof TiffTagType>(tag: T, options?: TiffFetchOptions): Promise<TiffTagType[T] | null> {
|
|
136
136
|
const sourceTag = this.tags.get(tag);
|
|
137
137
|
if (sourceTag == null) return null;
|
|
138
138
|
if (sourceTag.type === 'inline') return sourceTag.value as TiffTagType[T];
|
|
139
|
-
if (sourceTag.type === 'lazy') return fetchLazy(sourceTag, this.tiff) as Promise<TiffTagType[T]>;
|
|
139
|
+
if (sourceTag.type === 'lazy') return fetchLazy(sourceTag, this.tiff, options) as Promise<TiffTagType[T]>;
|
|
140
140
|
if (sourceTag.isLoaded) return sourceTag.value as TiffTagType[T];
|
|
141
|
-
if (sourceTag.type === 'offset') return fetchAllOffsets(this.tiff, sourceTag) as Promise<TiffTagType[T]>;
|
|
141
|
+
if (sourceTag.type === 'offset') return fetchAllOffsets(this.tiff, sourceTag, options) as Promise<TiffTagType[T]>;
|
|
142
142
|
throw new Error('Cannot fetch:' + tag);
|
|
143
143
|
}
|
|
144
144
|
/**
|
|
@@ -164,7 +164,7 @@ export class TiffImage {
|
|
|
164
164
|
get noData(): number | null {
|
|
165
165
|
const tag = this.tags.get(TiffTag.GdalNoData);
|
|
166
166
|
if (tag == null) return null;
|
|
167
|
-
if (tag.value) return Number(tag.value);
|
|
167
|
+
if (tag.value != null) return Number(tag.value);
|
|
168
168
|
throw new Error('GdalNoData tag is not loaded');
|
|
169
169
|
}
|
|
170
170
|
|
|
@@ -439,7 +439,10 @@ export class TiffImage {
|
|
|
439
439
|
*
|
|
440
440
|
* @param index Strip index to read
|
|
441
441
|
*/
|
|
442
|
-
async getStrip(
|
|
442
|
+
async getStrip(
|
|
443
|
+
index: number,
|
|
444
|
+
options?: TiffFetchOptions,
|
|
445
|
+
): Promise<{ mimeType: TiffMimeType; bytes: ArrayBuffer } | null> {
|
|
443
446
|
if (this.isTiled()) throw new Error('Cannot read stripes, tiff is tiled: ' + index);
|
|
444
447
|
|
|
445
448
|
const byteCounts = this.tags.get(TiffTag.StripByteCounts) as TagOffset;
|
|
@@ -448,10 +451,10 @@ export class TiffImage {
|
|
|
448
451
|
if (index >= byteCounts.count) throw new Error('Cannot read strip, index out of bounds');
|
|
449
452
|
|
|
450
453
|
const [byteCount, offset] = await Promise.all([
|
|
451
|
-
getOffset(this.tiff, offsets, index),
|
|
452
|
-
getOffset(this.tiff, byteCounts, index),
|
|
454
|
+
getOffset(this.tiff, offsets, index, options),
|
|
455
|
+
getOffset(this.tiff, byteCounts, index, options),
|
|
453
456
|
]);
|
|
454
|
-
return this.getBytes(byteCount, offset);
|
|
457
|
+
return this.getBytes(byteCount, offset, options);
|
|
455
458
|
}
|
|
456
459
|
|
|
457
460
|
/** The jpeg header is stored in the IFD, read the JPEG header and adjust the byte array to include it */
|
|
@@ -476,7 +479,7 @@ export class TiffImage {
|
|
|
476
479
|
async getBytes(
|
|
477
480
|
offset: number,
|
|
478
481
|
byteCount: number,
|
|
479
|
-
options?:
|
|
482
|
+
options?: TiffFetchOptions,
|
|
480
483
|
): Promise<{ mimeType: TiffMimeType; bytes: ArrayBuffer; compression: Compression } | null> {
|
|
481
484
|
if (byteCount === 0) return null;
|
|
482
485
|
|
|
@@ -504,7 +507,7 @@ export class TiffImage {
|
|
|
504
507
|
async getTile(
|
|
505
508
|
x: number,
|
|
506
509
|
y: number,
|
|
507
|
-
options?:
|
|
510
|
+
options?: TiffFetchOptions,
|
|
508
511
|
): Promise<{ mimeType: TiffMimeType; bytes: ArrayBuffer; compression: Compression } | null> {
|
|
509
512
|
const size = this.size;
|
|
510
513
|
const tiles = this.tileSize;
|
|
@@ -523,7 +526,7 @@ export class TiffImage {
|
|
|
523
526
|
const totalTiles = nxTiles * nyTiles;
|
|
524
527
|
if (idx >= totalTiles) throw new Error(`Tile index is outside of tile range: ${idx} >= ${totalTiles}`);
|
|
525
528
|
|
|
526
|
-
const { offset, imageSize } = await this.getTileSize(idx);
|
|
529
|
+
const { offset, imageSize } = await this.getTileSize(idx, options);
|
|
527
530
|
|
|
528
531
|
return this.getBytes(offset, imageSize, options);
|
|
529
532
|
}
|
|
@@ -539,7 +542,7 @@ export class TiffImage {
|
|
|
539
542
|
*
|
|
540
543
|
* @returns if the tile exists and has data
|
|
541
544
|
*/
|
|
542
|
-
async hasTile(x: number, y: number): Promise<boolean> {
|
|
545
|
+
async hasTile(x: number, y: number, options?: TiffFetchOptions): Promise<boolean> {
|
|
543
546
|
const tiles = this.tileSize;
|
|
544
547
|
const size = this.size;
|
|
545
548
|
|
|
@@ -550,7 +553,7 @@ export class TiffImage {
|
|
|
550
553
|
const nxTiles = Math.ceil(size.width / tiles.width);
|
|
551
554
|
if (x >= nxTiles || y >= nyTiles) return false;
|
|
552
555
|
const idx = y * nxTiles + x;
|
|
553
|
-
const ret = await this.getTileSize(idx);
|
|
556
|
+
const ret = await this.getTileSize(idx, options);
|
|
554
557
|
return ret.offset > 0;
|
|
555
558
|
}
|
|
556
559
|
|
|
@@ -562,7 +565,7 @@ export class TiffImage {
|
|
|
562
565
|
* @param index index in the tile array
|
|
563
566
|
* @returns Offset and byteCount for the tile
|
|
564
567
|
*/
|
|
565
|
-
async getTileSize(index: number): Promise<{ offset: number; imageSize: number }> {
|
|
568
|
+
async getTileSize(index: number, options?: TiffFetchOptions): Promise<{ offset: number; imageSize: number }> {
|
|
566
569
|
// If both the tile offset and tile byte counts are loaded,
|
|
567
570
|
// we can get the offset and byte count synchronously without needing to fetch any additional data
|
|
568
571
|
const byteCounts = this.tags.get(TiffTag.TileByteCounts) as TagOffset | TagInline<number[]>;
|
|
@@ -574,29 +577,34 @@ export class TiffImage {
|
|
|
574
577
|
// the few bytes leading up to the tile
|
|
575
578
|
const leaderBytes = this.tiff.options?.tileLeaderByteSize;
|
|
576
579
|
if (leaderBytes) {
|
|
577
|
-
const offset = tileOffset ?? (await getOffset(this.tiff, this.tileOffset, index));
|
|
580
|
+
const offset = tileOffset ?? (await getOffset(this.tiff, this.tileOffset, index, options));
|
|
578
581
|
// Sparse tiff no data found
|
|
579
582
|
if (offset === 0) return { offset: 0, imageSize: 0 };
|
|
580
583
|
|
|
581
584
|
// This fetch will generally load in the bytes needed for the image too
|
|
582
585
|
// provided the image size is less than the size of a chunk
|
|
583
|
-
const bytes = await this.tiff.source.fetch(offset - leaderBytes, leaderBytes);
|
|
586
|
+
const bytes = await this.tiff.source.fetch(offset - leaderBytes, leaderBytes, options);
|
|
584
587
|
return { offset, imageSize: getUint(new DataView(bytes), 0, leaderBytes, this.tiff.isLittleEndian) };
|
|
585
588
|
}
|
|
586
589
|
|
|
587
590
|
if (byteCounts == null) throw new Error('No tile byte counts found');
|
|
588
591
|
const [offset, imageSize] = await Promise.all([
|
|
589
|
-
tileOffset ?? getOffset(this.tiff, this.tileOffset, index),
|
|
590
|
-
tileSize ?? getOffset(this.tiff, byteCounts, index),
|
|
592
|
+
tileOffset ?? getOffset(this.tiff, this.tileOffset, index, options),
|
|
593
|
+
tileSize ?? getOffset(this.tiff, byteCounts, index, options),
|
|
591
594
|
]);
|
|
592
595
|
return { offset, imageSize };
|
|
593
596
|
}
|
|
594
597
|
}
|
|
595
598
|
|
|
596
|
-
function getOffset(
|
|
599
|
+
function getOffset(
|
|
600
|
+
tiff: Tiff,
|
|
601
|
+
x: TagOffset | TagInline<number[]>,
|
|
602
|
+
index: number,
|
|
603
|
+
options?: TiffFetchOptions,
|
|
604
|
+
): number | Promise<number> {
|
|
597
605
|
const val = getOffsetSync(tiff, x, index);
|
|
598
606
|
if (val != null) return Promise.resolve(val);
|
|
599
|
-
return getValueAt(tiff, x as TagOffset, index);
|
|
607
|
+
return getValueAt(tiff, x as TagOffset, index, options);
|
|
600
608
|
}
|
|
601
609
|
|
|
602
610
|
function getOffsetSync(tiff: Tiff, x: TagOffset | TagInline<number[]>, index: number): number | null {
|
package/src/tiff.ts
CHANGED
|
@@ -18,6 +18,10 @@ export interface TiffCreationOptions {
|
|
|
18
18
|
defaultReadSize: number;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
export interface TiffFetchOptions {
|
|
22
|
+
signal?: AbortSignal;
|
|
23
|
+
}
|
|
24
|
+
|
|
21
25
|
export class Tiff {
|
|
22
26
|
/** Read 16KB blocks at a time */
|
|
23
27
|
static DefaultReadSize = 16 * 1024;
|
|
@@ -49,9 +53,9 @@ export class Tiff {
|
|
|
49
53
|
/** Create a tiff and initialize it by reading the tiff headers */
|
|
50
54
|
static create(
|
|
51
55
|
source: Source,
|
|
52
|
-
options: TiffCreationOptions = { defaultReadSize: Tiff.DefaultReadSize },
|
|
56
|
+
options: TiffCreationOptions & TiffFetchOptions = { defaultReadSize: Tiff.DefaultReadSize },
|
|
53
57
|
): Promise<Tiff> {
|
|
54
|
-
return new Tiff(source, options).init();
|
|
58
|
+
return new Tiff(source, options).init(options);
|
|
55
59
|
}
|
|
56
60
|
|
|
57
61
|
/**
|
|
@@ -60,9 +64,10 @@ export class Tiff {
|
|
|
60
64
|
* This is only required if the Tiff was created with the constructor, if you
|
|
61
65
|
* used {@link create} this will have already been called.
|
|
62
66
|
*/
|
|
63
|
-
init(): Promise<Tiff> {
|
|
67
|
+
init(options?: TiffFetchOptions): Promise<Tiff> {
|
|
68
|
+
if (this.isInitialized) return Promise.resolve(this);
|
|
64
69
|
if (this._initPromise) return this._initPromise;
|
|
65
|
-
this._initPromise = this.readHeader();
|
|
70
|
+
this._initPromise = this.readHeader(options);
|
|
66
71
|
return this._initPromise;
|
|
67
72
|
}
|
|
68
73
|
|
|
@@ -92,11 +97,11 @@ export class Tiff {
|
|
|
92
97
|
}
|
|
93
98
|
|
|
94
99
|
/** Read the Starting header and all Image headers from the source */
|
|
95
|
-
private async readHeader(): Promise<Tiff> {
|
|
100
|
+
private async readHeader(options?: TiffFetchOptions): Promise<Tiff> {
|
|
96
101
|
if (this.isInitialized) return this;
|
|
97
102
|
// limit the read to the size of the file if it is known, for small tiffs
|
|
98
103
|
const bytes = new DataView(
|
|
99
|
-
await this.source.fetch(0, getMaxLength(this.source, 0, this.defaultReadSize)),
|
|
104
|
+
await this.source.fetch(0, getMaxLength(this.source, 0, this.defaultReadSize), options),
|
|
100
105
|
) as DataViewOffset;
|
|
101
106
|
if (bytes.byteLength === 0) throw new Error('Unable to read empty tiff');
|
|
102
107
|
|
|
@@ -144,6 +149,7 @@ export class Tiff {
|
|
|
144
149
|
const bytes = await this.source.fetch(
|
|
145
150
|
nextOffsetIfd,
|
|
146
151
|
getMaxLength(this.source, nextOffsetIfd, this.defaultReadSize),
|
|
152
|
+
options,
|
|
147
153
|
);
|
|
148
154
|
lastView = new DataView(bytes) as DataViewOffset;
|
|
149
155
|
lastView.sourceOffset = nextOffsetIfd;
|
|
@@ -151,7 +157,7 @@ export class Tiff {
|
|
|
151
157
|
nextOffsetIfd = this.readIfd(nextOffsetIfd, lastView);
|
|
152
158
|
}
|
|
153
159
|
|
|
154
|
-
await Promise.all(this.images.map((i) => i.init()));
|
|
160
|
+
await Promise.all(this.images.map((i) => i.init(true, options)));
|
|
155
161
|
this.isInitialized = true;
|
|
156
162
|
return this;
|
|
157
163
|
}
|