@cogeotiff/core 8.1.1 → 9.0.1
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 +31 -0
- package/README.md +45 -7
- package/build/__benchmark__/cog.read.benchmark.js +5 -5
- package/build/__benchmark__/cog.read.benchmark.js.map +1 -1
- package/build/__benchmark__/source.file.js +1 -1
- package/build/__benchmark__/source.file.js.map +1 -1
- package/build/__benchmark__/source.memory.d.ts +3 -0
- package/build/__benchmark__/source.memory.js +13 -0
- package/build/__benchmark__/source.memory.js.map +1 -1
- package/build/__test__/cog.image.test.js +14 -9
- package/build/__test__/cog.image.test.js.map +1 -1
- package/build/__test__/cog.read.test.js +42 -17
- package/build/__test__/cog.read.test.js.map +1 -1
- package/build/__test__/example.js +2 -2
- package/build/__test__/example.js.map +1 -1
- package/build/const/index.d.ts +1 -1
- package/build/const/index.js +1 -1
- package/build/const/index.js.map +1 -1
- package/build/const/tiff.mime.d.ts +11 -5
- package/build/const/tiff.mime.js +27 -14
- package/build/const/tiff.mime.js.map +1 -1
- package/build/const/tiff.tag.id.d.ts +603 -41
- package/build/const/tiff.tag.id.js +479 -50
- package/build/const/tiff.tag.id.js.map +1 -1
- package/build/const/tiff.tag.value.js +1 -1
- package/build/const/tiff.tag.value.js.map +1 -1
- package/build/index.d.ts +6 -5
- package/build/index.js +6 -4
- package/build/index.js.map +1 -1
- package/build/read/tiff.gdal.d.ts +1 -1
- package/build/read/tiff.gdal.js +1 -1
- package/build/read/tiff.gdal.js.map +1 -1
- package/build/read/tiff.ifd.config.js +1 -1
- package/build/read/tiff.ifd.config.js.map +1 -1
- package/build/read/tiff.tag.d.ts +3 -0
- package/build/read/tiff.tag.factory.d.ts +5 -5
- package/build/read/tiff.tag.factory.js +22 -13
- package/build/read/tiff.tag.factory.js.map +1 -1
- package/build/read/tiff.value.reader.d.ts +1 -1
- package/build/read/tiff.value.reader.js.map +1 -1
- package/build/{cog.tiff.d.ts → tiff.d.ts} +12 -10
- package/build/{cog.tiff.image.d.ts → tiff.image.d.ts} +69 -27
- package/build/{cog.tiff.image.js → tiff.image.js} +125 -82
- package/build/tiff.image.js.map +1 -0
- package/build/{cog.tiff.js → tiff.js} +19 -11
- package/build/tiff.js.map +1 -0
- package/build/util/bytes.d.ts +4 -2
- package/build/util/bytes.js +5 -2
- package/build/util/bytes.js.map +1 -1
- package/package.json +2 -2
- package/src/__benchmark__/cog.read.benchmark.ts +6 -5
- package/src/__benchmark__/source.file.ts +2 -1
- package/src/__benchmark__/source.memory.ts +10 -0
- package/src/__test__/cog.image.test.ts +17 -9
- package/src/__test__/cog.read.test.ts +53 -18
- package/src/__test__/example.ts +3 -2
- package/src/const/index.ts +1 -1
- package/src/const/tiff.mime.ts +28 -14
- package/src/const/tiff.tag.id.ts +758 -131
- package/src/const/tiff.tag.value.ts +16 -16
- package/src/index.ts +20 -5
- package/src/read/tiff.gdal.ts +1 -1
- package/src/read/tiff.ifd.config.ts +1 -1
- package/src/read/tiff.tag.factory.ts +33 -17
- package/src/read/tiff.tag.ts +3 -0
- package/src/read/tiff.value.reader.ts +1 -1
- package/src/{cog.tiff.image.ts → tiff.image.ts} +137 -92
- package/src/{cog.tiff.ts → tiff.ts} +22 -17
- package/src/util/bytes.ts +5 -1
- package/build/cog.tiff.image.js.map +0 -1
- package/build/cog.tiff.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,36 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [9.0.1](https://github.com/blacha/cogeotiff/compare/core-v9.0.0...core-v9.0.1) (2023-12-13)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* **core:** do not read past the end of a buffer ([c810ada](https://github.com/blacha/cogeotiff/commit/c810adacd9a508858a28d85f75afa620ec94b355))
|
|
9
|
+
|
|
10
|
+
## [9.0.0](https://github.com/blacha/cogeotiff/compare/core-v8.1.1...core-v9.0.0) (2023-12-11)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### ⚠ BREAKING CHANGES
|
|
14
|
+
|
|
15
|
+
* rename all type from CogTiff to just Tiff ([#1227](https://github.com/blacha/cogeotiff/issues/1227))
|
|
16
|
+
* modify structure of tiff tags ([#1225](https://github.com/blacha/cogeotiff/issues/1225))
|
|
17
|
+
|
|
18
|
+
### Features
|
|
19
|
+
|
|
20
|
+
* color more output and add more tags ([fe4088b](https://github.com/blacha/cogeotiff/commit/fe4088b3f1f88a1248d803c29a563872aab4205c))
|
|
21
|
+
* export all tag value constants ([#1229](https://github.com/blacha/cogeotiff/issues/1229)) ([44757e5](https://github.com/blacha/cogeotiff/commit/44757e5ba5c98e992bb9fd72eb9993c727648b74))
|
|
22
|
+
* expose default read size so it can be easily overridden ([5786246](https://github.com/blacha/cogeotiff/commit/57862469229503c95ee274b555fc75d828b58529))
|
|
23
|
+
* expose gdal's NO_DATA as a getter on the image ([#1230](https://github.com/blacha/cogeotiff/issues/1230)) ([fc21a30](https://github.com/blacha/cogeotiff/commit/fc21a30d6754f37923b92ee4fe26c557ff6d9378))
|
|
24
|
+
* force some tags to always be arrays ([#1228](https://github.com/blacha/cogeotiff/issues/1228)) ([acc8f93](https://github.com/blacha/cogeotiff/commit/acc8f93eac6f311bdb9d0a6e97e28e2457867c91))
|
|
25
|
+
* modify structure of tiff tags ([#1225](https://github.com/blacha/cogeotiff/issues/1225)) ([049e0bc](https://github.com/blacha/cogeotiff/commit/049e0bc3c4e15f8c095a3da4442ef144d372cf60))
|
|
26
|
+
* rename all type from CogTiff to just Tiff ([#1227](https://github.com/blacha/cogeotiff/issues/1227)) ([872263b](https://github.com/blacha/cogeotiff/commit/872263b11f1ab06853cb872de54a9d9dd745b647))
|
|
27
|
+
* Tag SampleFormat should also be a array ([4216ddd](https://github.com/blacha/cogeotiff/commit/4216dddc1601bf44a1e604ff78e515f90ccdbdfa))
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
### Bug Fixes
|
|
31
|
+
|
|
32
|
+
* allow unknown compression types to be read ([9247a70](https://github.com/blacha/cogeotiff/commit/9247a709d6f049785614fa41b79bbadf2061a07e))
|
|
33
|
+
|
|
3
34
|
## [8.1.1](https://github.com/blacha/cogeotiff/compare/core-v8.1.0...core-v8.1.1) (2023-11-14)
|
|
4
35
|
|
|
5
36
|
|
package/README.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# @cogeotiff/core
|
|
2
2
|
|
|
3
|
-
Working with [Cloud optimized GEOTiff](https://www.cogeo.org/)
|
|
3
|
+
Working with [Cloud optimized GEOTiff](https://www.cogeo.org/) and Tiffs
|
|
4
4
|
|
|
5
5
|
- Completely javascript based, works in the browser and nodejs
|
|
6
|
-
- Lazy load
|
|
7
|
-
- Supports huge 100GB+
|
|
6
|
+
- Lazy load Tiffs images and metadata
|
|
7
|
+
- Supports huge 100GB+ COG
|
|
8
8
|
- Uses GDAL COG optimizations, generally only one or two reads per tile!
|
|
9
|
-
- Loads
|
|
10
|
-
- Used in production for [LINZ's Basemaps](https://github.com/linz/basemaps) with billions of tiles fetched from
|
|
9
|
+
- Loads Tiffs from URL, File, Google Cloud or AWS S3
|
|
10
|
+
- Used in production for [LINZ's Basemaps](https://github.com/linz/basemaps) with billions of tiles fetched from Tiffs!
|
|
11
11
|
|
|
12
12
|
## Usage
|
|
13
13
|
|
|
@@ -15,10 +15,10 @@ Load a COG from a remote http source
|
|
|
15
15
|
|
|
16
16
|
```typescript
|
|
17
17
|
import { SourceHttp } from '@chunkd/source-url';
|
|
18
|
-
import {
|
|
18
|
+
import { Tiff } from '@cogeotiff/core'
|
|
19
19
|
|
|
20
20
|
const source = new SourceHttp('https://example.com/cog.tif');
|
|
21
|
-
const tiff = await
|
|
21
|
+
const tiff = await Tiff.create(source);
|
|
22
22
|
|
|
23
23
|
/** Load a specific tile from a specific image */
|
|
24
24
|
const tile = await tiff.images[5].getTile(2, 2);
|
|
@@ -36,8 +36,46 @@ if (img.isTiled()) {
|
|
|
36
36
|
const origin = img.origin;
|
|
37
37
|
/** Bounding box of the tiff */
|
|
38
38
|
const bbox = img.bbox;
|
|
39
|
+
|
|
40
|
+
// Tiff tags can be accessed via some helpers
|
|
41
|
+
const noData = img.noData; // -9999
|
|
42
|
+
const noDataTag = img.tags.get(TiffTag.GdalNoData) // Tag information such as file offset or tagId
|
|
43
|
+
const noDataValue = img.value(TiffTag.GdalNoData) // "-9999" (tag is stored as a string)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Tags
|
|
47
|
+
|
|
48
|
+
Tags are somewhat typesafe for most common use cases in typescript,
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
img.value(TiffTag.ImageWidth) // number
|
|
52
|
+
img.value(TiffTag.BitsPerSample) // number[]
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Some tags have exported constants to make them easier to work with
|
|
56
|
+
|
|
57
|
+
```typescript
|
|
58
|
+
import {Photometric} from '@cogeotiff/core'
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
const photometric = img.value(TiffTag.Photometric)
|
|
62
|
+
|
|
63
|
+
if( photometric == Photometric.Rgb) {
|
|
64
|
+
// Tiff is a RGB photometric tiff
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
For a full list of constants see [./src/index.ts](./src/index.ts)
|
|
69
|
+
|
|
70
|
+
GeoTiff tags are loaded into a separate location
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
import {RasterTypeKey} from '@cogeotiff/core'
|
|
74
|
+
|
|
75
|
+
const pixelIsArea = img.valueGeo(TiffTagGeo.GTRasterTypeGeoKey) == RasterTypeKey.PixelIsArea
|
|
39
76
|
```
|
|
40
77
|
|
|
78
|
+
### Examples
|
|
41
79
|
|
|
42
80
|
More examples can bee seen
|
|
43
81
|
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { readFile } from 'fs/promises';
|
|
2
|
-
import { CogTiff } from '../cog.tiff.js';
|
|
3
|
-
import { SourceMemory } from './source.memory.js';
|
|
4
2
|
import { TiffTag } from '../index.js';
|
|
3
|
+
import { Tiff } from '../tiff.js';
|
|
4
|
+
import { SourceMemory } from './source.memory.js';
|
|
5
5
|
// console.log = console.trace;
|
|
6
6
|
/** Read a tile from every image inside of a tiff 300 tiles read */
|
|
7
7
|
async function main() {
|
|
8
8
|
const buf = await readFile(process.argv[process.argv.length - 1]);
|
|
9
9
|
const source = new SourceMemory(buf);
|
|
10
10
|
for (let i = 0; i < 5000; i++) {
|
|
11
|
-
performance.mark('
|
|
12
|
-
const tiff = new
|
|
11
|
+
performance.mark('tiff:init');
|
|
12
|
+
const tiff = new Tiff(source);
|
|
13
13
|
await tiff.init();
|
|
14
|
-
performance.mark('
|
|
14
|
+
performance.mark('tiff:init:done');
|
|
15
15
|
// 6 images
|
|
16
16
|
for (const img of tiff.images)
|
|
17
17
|
await img.getTile(0, 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cog.read.benchmark.js","sourceRoot":"","sources":["../../src/__benchmark__/cog.read.benchmark.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cog.read.benchmark.js","sourceRoot":"","sources":["../../src/__benchmark__/cog.read.benchmark.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,+BAA+B;AAC/B,mEAAmE;AACnE,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEnC,WAAW;QACX,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEvD,+EAA+E;QAC/E,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACnD,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source.file.js","sourceRoot":"","sources":["../../src/__benchmark__/source.file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"source.file.js","sourceRoot":"","sources":["../../src/__benchmark__/source.file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAInC,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;AAElC,MAAM,OAAO,cAAc;IAIzB,YAAY,QAAa;QAHzB;;;;;WAAS;QACT;;;;;WAAsB;QAGpB,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YAC1C,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1D,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,MAAc;QACxC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;QACjC,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG,MAAM,EAAE,QAAQ,CAAC,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;IACpG,CAAC;IAED,IAAI,IAAI;QACN,OAAO,OAAO,CAAC,OAAO,EAAE;aACrB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC1B,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -3,6 +3,9 @@ import { Source } from '../source.js';
|
|
|
3
3
|
export declare class SourceMemory implements Source {
|
|
4
4
|
url: URL;
|
|
5
5
|
data: ArrayBuffer;
|
|
6
|
+
metadata: {
|
|
7
|
+
size: number;
|
|
8
|
+
};
|
|
6
9
|
static toArrayBuffer(buf: Buffer | Uint8Array | ArrayBuffer): ArrayBuffer;
|
|
7
10
|
constructor(bytes: Buffer | Uint8Array | ArrayBuffer);
|
|
8
11
|
fetch(offset: number, length?: number): Promise<ArrayBuffer>;
|
|
@@ -19,13 +19,26 @@ export class SourceMemory {
|
|
|
19
19
|
writable: true,
|
|
20
20
|
value: void 0
|
|
21
21
|
});
|
|
22
|
+
Object.defineProperty(this, "metadata", {
|
|
23
|
+
enumerable: true,
|
|
24
|
+
configurable: true,
|
|
25
|
+
writable: true,
|
|
26
|
+
value: void 0
|
|
27
|
+
});
|
|
22
28
|
this.url = new URL('memory://fake-file');
|
|
23
29
|
this.data = SourceMemory.toArrayBuffer(bytes);
|
|
30
|
+
this.metadata = { size: this.data.byteLength };
|
|
24
31
|
}
|
|
25
32
|
async fetch(offset, length) {
|
|
26
33
|
// console.log('Fetch', offset, length);
|
|
27
34
|
if (offset < 0)
|
|
28
35
|
offset = this.data.byteLength + offset;
|
|
36
|
+
if (offset > this.data.byteLength) {
|
|
37
|
+
throw new Error(`Read offset outside bounds ${offset}-${length}`);
|
|
38
|
+
}
|
|
39
|
+
if (length && offset + length > this.data.byteLength) {
|
|
40
|
+
throw new Error(`Read length outside bounds ${offset}-${length}`);
|
|
41
|
+
}
|
|
29
42
|
return this.data.slice(offset, length == null ? undefined : offset + length);
|
|
30
43
|
}
|
|
31
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source.memory.js","sourceRoot":"","sources":["../../src/__benchmark__/source.memory.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,YAAY;
|
|
1
|
+
{"version":3,"file":"source.memory.js","sourceRoot":"","sources":["../../src/__benchmark__/source.memory.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,YAAY;IAKvB,MAAM,CAAC,aAAa,CAAC,GAAsC;QACzD,IAAI,GAAG,YAAY,WAAW;YAAE,OAAO,GAAG,CAAC;QAC3C,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,MAAM,CAAC,UAAU;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC;QAChE,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3E,CAAC;IAED,YAAY,KAAwC;QAVpD;;;;;WAAS;QACT;;;;;WAAkB;QAClB;;;;;WAA2B;QASzB,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,MAAe;QACzC,wCAAwC;QACxC,IAAI,MAAM,GAAG,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QACvD,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,MAAM,IAAI,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAC/E,CAAC;CACF"}
|
|
@@ -1,20 +1,21 @@
|
|
|
1
|
-
import { promises as fs } from 'fs';
|
|
2
1
|
import assert from 'node:assert';
|
|
3
2
|
import { beforeEach, describe, it } from 'node:test';
|
|
3
|
+
import { promises as fs } from 'fs';
|
|
4
4
|
import { TestFileSource } from '../__benchmark__/source.file.js';
|
|
5
5
|
import { SourceMemory } from '../__benchmark__/source.memory.js';
|
|
6
|
-
import { ByteSize } from '../util/bytes.js';
|
|
7
|
-
import { CogTiff } from '../cog.tiff.js';
|
|
8
6
|
import { TiffMimeType } from '../const/tiff.mime.js';
|
|
7
|
+
import { Photometric, TiffTag } from '../const/tiff.tag.id.js';
|
|
8
|
+
import { Tiff } from '../tiff.js';
|
|
9
|
+
import { ByteSize } from '../util/bytes.js';
|
|
9
10
|
// 900913 properties.
|
|
10
11
|
const A = 6378137.0;
|
|
11
12
|
const InitialResolution = (2 * Math.PI * A) / 256;
|
|
12
13
|
function getResolution(zoom) {
|
|
13
14
|
return InitialResolution / 2 ** zoom;
|
|
14
15
|
}
|
|
15
|
-
describe('
|
|
16
|
+
describe('TiffTiled', () => {
|
|
16
17
|
const cogSourceFile = new TestFileSource(new URL('../../data/rgba8_tiled.tiff', import.meta.url));
|
|
17
|
-
const cog = new
|
|
18
|
+
const cog = new Tiff(cogSourceFile);
|
|
18
19
|
beforeEach(() => cog.init());
|
|
19
20
|
it('should match resolutions to web mercator zoom levels', () => {
|
|
20
21
|
for (let i = 0; i < 14; i++) {
|
|
@@ -70,7 +71,7 @@ describe('CogTiled', () => {
|
|
|
70
71
|
describe('Cog.Big', () => {
|
|
71
72
|
it('should support reading from memory', async () => {
|
|
72
73
|
const fullSource = new TestFileSource(new URL('../../data/sparse.tiff', import.meta.url));
|
|
73
|
-
const cog = new
|
|
74
|
+
const cog = new Tiff(fullSource);
|
|
74
75
|
await cog.init();
|
|
75
76
|
const [firstImage] = cog.images;
|
|
76
77
|
assert.equal(firstImage.stripCount, 0);
|
|
@@ -81,7 +82,7 @@ describe('Cog.Big', () => {
|
|
|
81
82
|
it('should read using a memory source', async () => {
|
|
82
83
|
const bytes = await fs.readFile(new URL('../../data/sparse.tiff', import.meta.url));
|
|
83
84
|
const source = new SourceMemory(bytes.buffer);
|
|
84
|
-
const cog = new
|
|
85
|
+
const cog = new Tiff(source);
|
|
85
86
|
await cog.init();
|
|
86
87
|
const [firstImage] = cog.images;
|
|
87
88
|
assert.equal(firstImage.stripCount, 0);
|
|
@@ -92,7 +93,7 @@ describe('Cog.Big', () => {
|
|
|
92
93
|
});
|
|
93
94
|
describe('Cog.Sparse', () => {
|
|
94
95
|
const cogSourceFile = new TestFileSource(new URL('../../data/sparse.tiff', import.meta.url));
|
|
95
|
-
const cog = new
|
|
96
|
+
const cog = new Tiff(cogSourceFile);
|
|
96
97
|
it('should read metadata', async () => {
|
|
97
98
|
await cog.init();
|
|
98
99
|
assert.equal(cog.images[0].epsg, 2193);
|
|
@@ -106,6 +107,10 @@ describe('Cog.Sparse', () => {
|
|
|
106
107
|
const img = cog.images[z];
|
|
107
108
|
const { tileCount } = img;
|
|
108
109
|
assert.deepEqual(tileCount, { x: 2, y: 2 });
|
|
110
|
+
assert.equal(img.value(TiffTag.SamplesPerPixel), 4); // 4 bands
|
|
111
|
+
assert.deepEqual(img.value(TiffTag.BitsPerSample), [8, 8, 8, 8]);
|
|
112
|
+
assert.equal(img.value(TiffTag.Photometric), Photometric.Rgb);
|
|
113
|
+
assert.equal(img.value(TiffTag.GdalNoData), null);
|
|
109
114
|
for (let x = 0; x < tileCount.x; x++) {
|
|
110
115
|
for (let y = 0; y < tileCount.y; y++) {
|
|
111
116
|
const hasTile = await img.hasTile(x, y);
|
|
@@ -134,7 +139,7 @@ describe('Cog.Sparse', () => {
|
|
|
134
139
|
});
|
|
135
140
|
describe('CogStrip', () => {
|
|
136
141
|
const cogSourceFile = new TestFileSource(new URL('../../data/rgba8_strip.tiff', import.meta.url));
|
|
137
|
-
const cog = new
|
|
142
|
+
const cog = new Tiff(cogSourceFile);
|
|
138
143
|
beforeEach(() => cog.init());
|
|
139
144
|
it('should get origin from all images', () => {
|
|
140
145
|
const baseOrigin = cog.images[0].origin;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cog.image.test.js","sourceRoot":"","sources":["../../src/__test__/cog.image.test.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"cog.image.test.js","sourceRoot":"","sources":["../../src/__test__/cog.image.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import assert from 'node:assert';
|
|
2
|
+
import { readFile } from 'node:fs/promises';
|
|
2
3
|
import { describe, it } from 'node:test';
|
|
3
4
|
import { TestFileSource } from '../__benchmark__/source.file.js';
|
|
4
|
-
import {
|
|
5
|
+
import { SourceMemory } from '../__benchmark__/source.memory.js';
|
|
5
6
|
import { TiffMimeType } from '../const/tiff.mime.js';
|
|
7
|
+
import { Photometric, SampleFormat } from '../const/tiff.tag.id.js';
|
|
6
8
|
import { TiffVersion } from '../const/tiff.version.js';
|
|
7
9
|
import { TiffTag, TiffTagGeo } from '../index.js';
|
|
10
|
+
import { Tiff } from '../tiff.js';
|
|
8
11
|
function validate(tif) {
|
|
9
12
|
assert.equal(tif.images.length, 5);
|
|
10
13
|
const [firstTif] = tif.images;
|
|
@@ -16,7 +19,7 @@ describe('CogRead', () => {
|
|
|
16
19
|
// TODO this does not load 100% yet
|
|
17
20
|
// it('should read big endian', async () => {
|
|
18
21
|
// const source = new TestFileSource(new URL('../../data/big_cog.tiff', import.meta.url));
|
|
19
|
-
// const tiff = new
|
|
22
|
+
// const tiff = new Tiff(source);
|
|
20
23
|
// await tiff.init();
|
|
21
24
|
// assert.equal(tiff.isLittleEndian, false);
|
|
22
25
|
// assert.equal(tiff.version, TiffVersion.BigTiff);
|
|
@@ -24,7 +27,7 @@ describe('CogRead', () => {
|
|
|
24
27
|
// });
|
|
25
28
|
it('should read big tiff', async () => {
|
|
26
29
|
const source = new TestFileSource(new URL('../../data/big_cog.tiff', import.meta.url));
|
|
27
|
-
const tiff = new
|
|
30
|
+
const tiff = new Tiff(source);
|
|
28
31
|
await tiff.init();
|
|
29
32
|
assert.equal(tiff.isLittleEndian, true);
|
|
30
33
|
assert.equal(tiff.version, TiffVersion.BigTiff);
|
|
@@ -32,7 +35,7 @@ describe('CogRead', () => {
|
|
|
32
35
|
});
|
|
33
36
|
it('should read tiff', async () => {
|
|
34
37
|
const source = new TestFileSource(new URL('../../data/cog.tiff', import.meta.url));
|
|
35
|
-
const tiff = new
|
|
38
|
+
const tiff = new Tiff(source);
|
|
36
39
|
await tiff.init();
|
|
37
40
|
assert.equal(tiff.isLittleEndian, true);
|
|
38
41
|
assert.equal(tiff.version, TiffVersion.Tiff);
|
|
@@ -42,7 +45,7 @@ describe('CogRead', () => {
|
|
|
42
45
|
});
|
|
43
46
|
it('should allow multiple init', async () => {
|
|
44
47
|
const source = new TestFileSource(new URL('../../data/cog.tiff', import.meta.url));
|
|
45
|
-
const tiff = new
|
|
48
|
+
const tiff = new Tiff(source);
|
|
46
49
|
assert.equal(tiff.isInitialized, false);
|
|
47
50
|
await tiff.init();
|
|
48
51
|
assert.equal(tiff.isInitialized, true);
|
|
@@ -53,42 +56,64 @@ describe('CogRead', () => {
|
|
|
53
56
|
});
|
|
54
57
|
it('should read ifds from anywhere in the file', async () => {
|
|
55
58
|
const source = new TestFileSource(new URL('../../data/DEM_BS28_2016_1000_1141.tif', import.meta.url));
|
|
56
|
-
const tiff = await
|
|
59
|
+
const tiff = await Tiff.create(source);
|
|
57
60
|
assert.equal(tiff.images.length, 1);
|
|
58
61
|
const im = tiff.images[0];
|
|
59
62
|
assert.equal(im.isGeoTagsLoaded, true);
|
|
60
63
|
assert.equal(im.epsg, 2193);
|
|
61
64
|
assert.equal(im.compression, TiffMimeType.None);
|
|
62
65
|
assert.equal(im.isTiled(), false);
|
|
63
|
-
|
|
64
|
-
assert.
|
|
66
|
+
// 32 bit float DEM
|
|
67
|
+
assert.deepEqual(im.value(TiffTag.BitsPerSample), [32]);
|
|
68
|
+
assert.deepEqual(im.value(TiffTag.SampleFormat), [SampleFormat.Float]);
|
|
69
|
+
assert.equal(im.value(TiffTag.Photometric), Photometric.MinIsBlack);
|
|
70
|
+
assert.equal(im.value(TiffTag.GdalNoData), '-9999');
|
|
71
|
+
assert.equal(im.noData, -9999);
|
|
72
|
+
assert.equal(im.valueGeo(TiffTagGeo.GTCitationGeoKey), 'NZGD2000 / New Zealand Transverse Mercator 2000');
|
|
73
|
+
assert.equal(im.valueGeo(TiffTagGeo.GeodeticCitationGeoKey), 'NZGD2000');
|
|
65
74
|
assert.deepEqual(await im.fetch(TiffTag.StripByteCounts), [8064, 8064, 8064, 8064, 8064, 8064, 8064, 5040]);
|
|
66
75
|
});
|
|
67
76
|
it('should read sub array ifds', async () => {
|
|
68
77
|
const source = new TestFileSource(new URL('../../data/east_coast_phase3_2023_AY31_1000_3335.tif.gz', import.meta.url));
|
|
69
|
-
const tiff = await
|
|
78
|
+
const tiff = await Tiff.create(source);
|
|
70
79
|
assert.equal(tiff.images.length, 5);
|
|
71
80
|
const im = tiff.images[0];
|
|
72
81
|
assert.equal(im.isGeoTagsLoaded, true);
|
|
73
82
|
assert.equal(im.epsg, 2193);
|
|
74
83
|
assert.equal(im.compression, TiffMimeType.Lzw);
|
|
84
|
+
assert.deepEqual(im.value(TiffTag.BitsPerSample), [8, 8, 8, 8]);
|
|
75
85
|
const geoTags = [...im.tagsGeo.keys()].map((key) => TiffTagGeo[key]);
|
|
76
86
|
assert.deepEqual(geoTags, [
|
|
77
87
|
'GTModelTypeGeoKey',
|
|
78
88
|
'GTRasterTypeGeoKey',
|
|
79
89
|
'GTCitationGeoKey',
|
|
80
|
-
'
|
|
90
|
+
'GeodeticCRSGeoKey',
|
|
81
91
|
'GeogAngularUnitsGeoKey',
|
|
82
|
-
'
|
|
83
|
-
'
|
|
84
|
-
'
|
|
85
|
-
'
|
|
92
|
+
'EllipsoidGeoKey',
|
|
93
|
+
'EllipsoidSemiMajorAxisGeoKey',
|
|
94
|
+
'EllipsoidSemiMinorAxisGeoKey',
|
|
95
|
+
'EllipsoidInvFlatteningGeoKey',
|
|
86
96
|
'GeogTOWGS84GeoKey',
|
|
87
|
-
'
|
|
88
|
-
'
|
|
97
|
+
'ProjectedCRSGeoKey',
|
|
98
|
+
'ProjectedCitationGeoKey',
|
|
89
99
|
'ProjLinearUnitsGeoKey',
|
|
90
100
|
]);
|
|
91
|
-
assert.deepEqual(im.
|
|
101
|
+
assert.deepEqual(im.valueGeo(TiffTagGeo.GeogTOWGS84GeoKey), [0, 0, 0, 0, 0, 0, 0]);
|
|
102
|
+
});
|
|
103
|
+
it('should allow invalid compression', async () => {
|
|
104
|
+
const source = new TestFileSource(new URL('../../data/cog.tiff', import.meta.url));
|
|
105
|
+
const tiff = await Tiff.create(source);
|
|
106
|
+
// Overwrite the loaded compression type to a invalid value
|
|
107
|
+
tiff.images[0].tags.get(TiffTag.Compression).value = -1;
|
|
108
|
+
const tile = await tiff.images[0].getTile(0, 0);
|
|
109
|
+
assert.deepEqual(tile?.mimeType, 'application/octet-stream');
|
|
110
|
+
});
|
|
111
|
+
it('should load small tiffs', async () => {
|
|
112
|
+
const cogSourceFile = new URL('../../data/rgba8_tiled.tiff', import.meta.url);
|
|
113
|
+
const buf = await readFile(cogSourceFile);
|
|
114
|
+
const source = new SourceMemory(buf);
|
|
115
|
+
const tiff = await Tiff.create(source);
|
|
116
|
+
assert.equal(tiff.images.length, 5);
|
|
92
117
|
});
|
|
93
118
|
});
|
|
94
119
|
//# sourceMappingURL=cog.read.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cog.read.test.js","sourceRoot":"","sources":["../../src/__test__/cog.read.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cog.read.test.js","sourceRoot":"","sources":["../../src/__test__/cog.read.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { SourceHttp } from '@chunkd/source-http';
|
|
2
|
-
import {
|
|
2
|
+
import { Tiff } from '../index.js';
|
|
3
3
|
async function main() {
|
|
4
4
|
const source = new SourceHttp('https://example.com/cog.tif');
|
|
5
|
-
const tiff = await
|
|
5
|
+
const tiff = await Tiff.create(source);
|
|
6
6
|
/** Load a specific tile from a specific image */
|
|
7
7
|
const tile = await tiff.images[5].getTile(2, 2);
|
|
8
8
|
if (tile != null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"example.js","sourceRoot":"","sources":["../../src/__test__/example.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"example.js","sourceRoot":"","sources":["../../src/__test__/example.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,6BAA6B,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAEvC,iDAAiD;IACjD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,CAAC,iDAAiD;IAC/D,CAAC;IAED,qCAAqC;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;QAClB,0BAA0B;QAC1B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACvC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa;YAC5B,IAAI,CAAC,KAAK,CAAC,CAAC,mBAAmB;QACjC,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,GAAG,CAAC,MAAM,CAAC;IACX,+BAA+B;IAC/B,GAAG,CAAC,IAAI,CAAC;AACX,CAAC;AAED,IAAI,EAAE,CAAC"}
|
package/build/const/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { TiffEndian } from './tiff.endian.js';
|
|
2
|
-
export { TiffCompression, TiffMimeType } from './tiff.mime.js';
|
|
2
|
+
export { TiffCompressionMimeType as TiffCompression, TiffMimeType } from './tiff.mime.js';
|
|
3
3
|
export { TiffTag as TiffTag, TiffTagGeo as TiffTagGeo } from './tiff.tag.id.js';
|
|
4
4
|
export { TiffTagValueType } from './tiff.tag.value.js';
|
|
5
5
|
export { TiffVersion } from './tiff.version.js';
|
package/build/const/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { TiffEndian } from './tiff.endian.js';
|
|
2
|
-
export { TiffCompression, TiffMimeType } from './tiff.mime.js';
|
|
2
|
+
export { TiffCompressionMimeType as TiffCompression, TiffMimeType } from './tiff.mime.js';
|
|
3
3
|
export { TiffTag as TiffTag, TiffTagGeo as TiffTagGeo } from './tiff.tag.id.js';
|
|
4
4
|
export { TiffTagValueType } from './tiff.tag.value.js';
|
|
5
5
|
export { TiffVersion } from './tiff.version.js';
|
package/build/const/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/const/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/const/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,uBAAuB,IAAI,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC1F,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,UAAU,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { Compression } from './tiff.tag.id.js';
|
|
1
2
|
/**
|
|
2
|
-
* MimeType conversion for common tif image types
|
|
3
|
+
* MimeType conversion for common tif image compresson types
|
|
3
4
|
*/
|
|
4
5
|
export declare enum TiffMimeType {
|
|
5
6
|
None = "application/octet-stream",
|
|
6
7
|
Jpeg = "image/jpeg",
|
|
7
|
-
|
|
8
|
+
Jp2000 = "image/jp2",
|
|
8
9
|
JpegXl = "image/jpegxl",
|
|
9
10
|
Webp = "image/webp",
|
|
10
11
|
Zstd = "application/zstd",
|
|
@@ -13,6 +14,11 @@ export declare enum TiffMimeType {
|
|
|
13
14
|
Lerc = "application/lerc",
|
|
14
15
|
Lzma = "application/x-lzma"
|
|
15
16
|
}
|
|
16
|
-
export declare const
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
export declare const TiffCompressionMimeType: Record<Compression, TiffMimeType>;
|
|
18
|
+
/**
|
|
19
|
+
* Lookup the related mimetype for a compression id
|
|
20
|
+
*
|
|
21
|
+
* @param c Compression id
|
|
22
|
+
* @returns mime type for compression
|
|
23
|
+
*/
|
|
24
|
+
export declare function getCompressionMimeType(c: Compression | null): TiffMimeType | null;
|
package/build/const/tiff.mime.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
+
import { Compression } from './tiff.tag.id.js';
|
|
1
2
|
/**
|
|
2
|
-
* MimeType conversion for common tif image types
|
|
3
|
+
* MimeType conversion for common tif image compresson types
|
|
3
4
|
*/
|
|
4
5
|
export var TiffMimeType;
|
|
5
6
|
(function (TiffMimeType) {
|
|
6
7
|
TiffMimeType["None"] = "application/octet-stream";
|
|
7
8
|
TiffMimeType["Jpeg"] = "image/jpeg";
|
|
8
|
-
TiffMimeType["
|
|
9
|
+
TiffMimeType["Jp2000"] = "image/jp2";
|
|
9
10
|
TiffMimeType["JpegXl"] = "image/jpegxl";
|
|
10
11
|
TiffMimeType["Webp"] = "image/webp";
|
|
11
12
|
TiffMimeType["Zstd"] = "application/zstd";
|
|
@@ -14,17 +15,29 @@ export var TiffMimeType;
|
|
|
14
15
|
TiffMimeType["Lerc"] = "application/lerc";
|
|
15
16
|
TiffMimeType["Lzma"] = "application/x-lzma";
|
|
16
17
|
})(TiffMimeType || (TiffMimeType = {}));
|
|
17
|
-
export const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
18
|
+
export const TiffCompressionMimeType = {
|
|
19
|
+
[Compression.None]: TiffMimeType.None,
|
|
20
|
+
[Compression.Lzw]: TiffMimeType.Lzw,
|
|
21
|
+
[Compression.Jpeg6]: TiffMimeType.Jpeg,
|
|
22
|
+
[Compression.Jpeg]: TiffMimeType.Jpeg,
|
|
23
|
+
[Compression.DeflateOther]: TiffMimeType.Deflate,
|
|
24
|
+
[Compression.Deflate]: TiffMimeType.Deflate,
|
|
25
|
+
[Compression.Lerc]: TiffMimeType.Lerc,
|
|
26
|
+
[Compression.Lzma]: TiffMimeType.Lzma,
|
|
27
|
+
[Compression.Jp2000]: TiffMimeType.Jp2000,
|
|
28
|
+
[Compression.Zstd]: TiffMimeType.Zstd,
|
|
29
|
+
[Compression.Webp]: TiffMimeType.Webp,
|
|
30
|
+
[Compression.JpegXl]: TiffMimeType.JpegXl,
|
|
29
31
|
};
|
|
32
|
+
/**
|
|
33
|
+
* Lookup the related mimetype for a compression id
|
|
34
|
+
*
|
|
35
|
+
* @param c Compression id
|
|
36
|
+
* @returns mime type for compression
|
|
37
|
+
*/
|
|
38
|
+
export function getCompressionMimeType(c) {
|
|
39
|
+
if (c == null)
|
|
40
|
+
return null;
|
|
41
|
+
return TiffCompressionMimeType[c];
|
|
42
|
+
}
|
|
30
43
|
//# sourceMappingURL=tiff.mime.js.map
|