@loaders.gl/images 4.0.0-beta.3 → 4.0.0-beta.5
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/dist/dist.dev.js +12 -40
- package/dist/index.cjs +14 -9
- package/dist/lib/category-api/image-format.js +4 -5
- package/dist/lib/category-api/image-format.js.map +1 -1
- package/dist/lib/category-api/image-type.js +3 -4
- package/dist/lib/category-api/image-type.js.map +1 -1
- package/dist/lib/encoders/encode-image.js +3 -4
- package/dist/lib/encoders/encode-image.js.map +1 -1
- package/dist/lib/parsers/parse-to-node-image.js +4 -3
- package/dist/lib/parsers/parse-to-node-image.js.map +1 -1
- package/package.json +3 -3
- package/src/lib/category-api/image-format.ts +3 -3
- package/src/lib/category-api/image-type.ts +2 -2
- package/src/lib/encoders/encode-image.ts +3 -3
- package/src/lib/parsers/parse-to-node-image.ts +3 -3
package/dist/dist.dev.js
CHANGED
|
@@ -62,10 +62,7 @@ var __exports__ = (() => {
|
|
|
62
62
|
var window_ = globals.window || globals.self || globals.global || {};
|
|
63
63
|
var global_ = globals.global || globals.self || globals.window || {};
|
|
64
64
|
var document_ = globals.document || {};
|
|
65
|
-
var isBrowser = (
|
|
66
|
-
// @ts-ignore process does not exist on browser
|
|
67
|
-
Boolean(typeof process !== "object" || String(process) !== "[object process]" || process.browser)
|
|
68
|
-
);
|
|
65
|
+
var isBrowser = Boolean(typeof process !== "object" || String(process) !== "[object process]" || process.browser);
|
|
69
66
|
var matches = typeof process !== "undefined" && process.version && /v([0-9]*)/.exec(process.version);
|
|
70
67
|
var nodeVersion = matches && parseFloat(matches[1]) || 0;
|
|
71
68
|
|
|
@@ -86,12 +83,10 @@ var __exports__ = (() => {
|
|
|
86
83
|
}
|
|
87
84
|
|
|
88
85
|
// src/lib/category-api/image-type.ts
|
|
89
|
-
var
|
|
90
|
-
_parseImageNode
|
|
91
|
-
} = globalThis;
|
|
86
|
+
var parseImageNode = globalThis.loaders?.parseImageNode;
|
|
92
87
|
var IMAGE_SUPPORTED = typeof Image !== "undefined";
|
|
93
88
|
var IMAGE_BITMAP_SUPPORTED = typeof ImageBitmap !== "undefined";
|
|
94
|
-
var NODE_IMAGE_SUPPORTED = Boolean(
|
|
89
|
+
var NODE_IMAGE_SUPPORTED = Boolean(parseImageNode);
|
|
95
90
|
var DATA_SUPPORTED = isBrowser ? true : NODE_IMAGE_SUPPORTED;
|
|
96
91
|
function isImageTypeSupported(type) {
|
|
97
92
|
switch (type) {
|
|
@@ -314,7 +309,6 @@ var __exports__ = (() => {
|
|
|
314
309
|
}
|
|
315
310
|
return {
|
|
316
311
|
mimeType: mediaType.mimeType,
|
|
317
|
-
// TODO - decode width and height
|
|
318
312
|
width: 0,
|
|
319
313
|
height: 0
|
|
320
314
|
};
|
|
@@ -372,9 +366,7 @@ var __exports__ = (() => {
|
|
|
372
366
|
return {
|
|
373
367
|
mimeType: "image/jpeg",
|
|
374
368
|
height: dataView.getUint16(i + 5, BIG_ENDIAN),
|
|
375
|
-
// Number of lines
|
|
376
369
|
width: dataView.getUint16(i + 7, BIG_ENDIAN)
|
|
377
|
-
// Number of pixels per line
|
|
378
370
|
};
|
|
379
371
|
}
|
|
380
372
|
if (!tableMarkers.has(marker)) {
|
|
@@ -414,9 +406,9 @@ var __exports__ = (() => {
|
|
|
414
406
|
const {
|
|
415
407
|
mimeType
|
|
416
408
|
} = getBinaryImageMetadata(arrayBuffer) || {};
|
|
417
|
-
const
|
|
418
|
-
assert(
|
|
419
|
-
return await
|
|
409
|
+
const parseImageNode2 = globalThis.loaders?.parseImageNode;
|
|
410
|
+
assert(parseImageNode2);
|
|
411
|
+
return await parseImageNode2(arrayBuffer, mimeType);
|
|
420
412
|
}
|
|
421
413
|
|
|
422
414
|
// src/lib/parsers/parse-image.ts
|
|
@@ -465,9 +457,7 @@ var __exports__ = (() => {
|
|
|
465
457
|
image: {
|
|
466
458
|
type: "auto",
|
|
467
459
|
decode: true
|
|
468
|
-
// if format is HTML
|
|
469
460
|
}
|
|
470
|
-
// imagebitmap: {} - passes (platform dependent) parameters to ImageBitmap constructor
|
|
471
461
|
};
|
|
472
462
|
var ImageLoader = {
|
|
473
463
|
id: "image",
|
|
@@ -477,19 +467,16 @@ var __exports__ = (() => {
|
|
|
477
467
|
mimeTypes: MIME_TYPES,
|
|
478
468
|
extensions: EXTENSIONS,
|
|
479
469
|
parse: parseImage,
|
|
480
|
-
// TODO: byteOffset, byteLength;
|
|
481
470
|
tests: [(arrayBuffer) => Boolean(getBinaryImageMetadata(new DataView(arrayBuffer)))],
|
|
482
471
|
options: DEFAULT_IMAGE_LOADER_OPTIONS
|
|
483
472
|
};
|
|
484
473
|
|
|
485
474
|
// src/lib/encoders/encode-image.ts
|
|
486
|
-
var
|
|
487
|
-
_encodeImageNode
|
|
488
|
-
} = globalThis;
|
|
475
|
+
var encodeImageNode = globalThis.loaders?.encodeImageNode;
|
|
489
476
|
async function encodeImage(image, options) {
|
|
490
477
|
options = options || {};
|
|
491
478
|
options.image = options.image || {};
|
|
492
|
-
return
|
|
479
|
+
return encodeImageNode ? encodeImageNode(image, {
|
|
493
480
|
type: options.image.mimeType
|
|
494
481
|
}) : encodeImageInBrowser(image, options);
|
|
495
482
|
}
|
|
@@ -559,19 +546,7 @@ var __exports__ = (() => {
|
|
|
559
546
|
};
|
|
560
547
|
|
|
561
548
|
// src/lib/category-api/image-format.ts
|
|
562
|
-
var MIME_TYPES2 = [
|
|
563
|
-
"image/png",
|
|
564
|
-
"image/jpeg",
|
|
565
|
-
"image/gif",
|
|
566
|
-
"image/webp",
|
|
567
|
-
"image/avif",
|
|
568
|
-
"image/tiff",
|
|
569
|
-
// TODO - what is the correct type for SVG
|
|
570
|
-
"image/svg",
|
|
571
|
-
"image/svg+xml",
|
|
572
|
-
"image/bmp",
|
|
573
|
-
"image/vnd.microsoft.icon"
|
|
574
|
-
];
|
|
549
|
+
var MIME_TYPES2 = ["image/png", "image/jpeg", "image/gif", "image/webp", "image/avif", "image/tiff", "image/svg", "image/svg+xml", "image/bmp", "image/vnd.microsoft.icon"];
|
|
575
550
|
var mimeTypeSupportedPromise = null;
|
|
576
551
|
async function getSupportedImageFormats() {
|
|
577
552
|
if (mimeTypeSupportedPromise) {
|
|
@@ -596,11 +571,9 @@ var __exports__ = (() => {
|
|
|
596
571
|
}
|
|
597
572
|
function checkNodeImageFormatSupport(mimeType) {
|
|
598
573
|
const NODE_FORMAT_SUPPORT = ["image/png", "image/jpeg", "image/gif"];
|
|
599
|
-
const
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
} = globalThis;
|
|
603
|
-
return Boolean(_parseImageNode2) && _imageFormatsNode.includes(mimeType);
|
|
574
|
+
const parseImageNode2 = globalThis.loaders?.parseImageNode;
|
|
575
|
+
const imageFormatsNode = globalThis.loaders?.imageFormatsNode || NODE_FORMAT_SUPPORT;
|
|
576
|
+
return Boolean(parseImageNode2) && imageFormatsNode.includes(mimeType);
|
|
604
577
|
}
|
|
605
578
|
function checkBrowserImageFormatSupport(mimeType) {
|
|
606
579
|
switch (mimeType) {
|
|
@@ -613,7 +586,6 @@ var __exports__ = (() => {
|
|
|
613
586
|
}
|
|
614
587
|
var TEST_IMAGE = {
|
|
615
588
|
"image/avif": "data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=",
|
|
616
|
-
// Lossy test image. Support for lossy images doesn't guarantee support for all WebP images.
|
|
617
589
|
"image/webp": "data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA"
|
|
618
590
|
};
|
|
619
591
|
async function checkBrowserImageFormatSupportAsync(mimeType) {
|
package/dist/index.cjs
CHANGED
|
@@ -43,10 +43,11 @@ var import_loader_utils3 = require("@loaders.gl/loader-utils");
|
|
|
43
43
|
|
|
44
44
|
// src/lib/category-api/image-type.ts
|
|
45
45
|
var import_loader_utils = require("@loaders.gl/loader-utils");
|
|
46
|
-
var
|
|
46
|
+
var _a;
|
|
47
|
+
var parseImageNode = (_a = globalThis.loaders) == null ? void 0 : _a.parseImageNode;
|
|
47
48
|
var IMAGE_SUPPORTED = typeof Image !== "undefined";
|
|
48
49
|
var IMAGE_BITMAP_SUPPORTED = typeof ImageBitmap !== "undefined";
|
|
49
|
-
var NODE_IMAGE_SUPPORTED = Boolean(
|
|
50
|
+
var NODE_IMAGE_SUPPORTED = Boolean(parseImageNode);
|
|
50
51
|
var DATA_SUPPORTED = import_loader_utils.isBrowser ? true : NODE_IMAGE_SUPPORTED;
|
|
51
52
|
function isImageTypeSupported(type) {
|
|
52
53
|
switch (type) {
|
|
@@ -375,10 +376,11 @@ function toDataView(data) {
|
|
|
375
376
|
|
|
376
377
|
// src/lib/parsers/parse-to-node-image.ts
|
|
377
378
|
async function parseToNodeImage(arrayBuffer, options) {
|
|
379
|
+
var _a3;
|
|
378
380
|
const { mimeType } = getBinaryImageMetadata(arrayBuffer) || {};
|
|
379
|
-
const
|
|
380
|
-
(0, import_loader_utils2.assert)(
|
|
381
|
-
return await
|
|
381
|
+
const parseImageNode2 = (_a3 = globalThis.loaders) == null ? void 0 : _a3.parseImageNode;
|
|
382
|
+
(0, import_loader_utils2.assert)(parseImageNode2);
|
|
383
|
+
return await parseImageNode2(arrayBuffer, mimeType);
|
|
382
384
|
}
|
|
383
385
|
|
|
384
386
|
// src/lib/parsers/parse-image.ts
|
|
@@ -452,11 +454,12 @@ var ImageLoader = {
|
|
|
452
454
|
};
|
|
453
455
|
|
|
454
456
|
// src/lib/encoders/encode-image.ts
|
|
455
|
-
var
|
|
457
|
+
var _a2;
|
|
458
|
+
var encodeImageNode = (_a2 = globalThis.loaders) == null ? void 0 : _a2.encodeImageNode;
|
|
456
459
|
async function encodeImage(image, options) {
|
|
457
460
|
options = options || {};
|
|
458
461
|
options.image = options.image || {};
|
|
459
|
-
return
|
|
462
|
+
return encodeImageNode ? encodeImageNode(image, { type: options.image.mimeType }) : encodeImageInBrowser(image, options);
|
|
460
463
|
}
|
|
461
464
|
var qualityParamSupported = true;
|
|
462
465
|
async function encodeImageInBrowser(image, options) {
|
|
@@ -555,9 +558,11 @@ function isImageFormatSupported(mimeType) {
|
|
|
555
558
|
return mimeTypeSupportedSync[mimeType];
|
|
556
559
|
}
|
|
557
560
|
function checkNodeImageFormatSupport(mimeType) {
|
|
561
|
+
var _a3, _b;
|
|
558
562
|
const NODE_FORMAT_SUPPORT = ["image/png", "image/jpeg", "image/gif"];
|
|
559
|
-
const
|
|
560
|
-
|
|
563
|
+
const parseImageNode2 = (_a3 = globalThis.loaders) == null ? void 0 : _a3.parseImageNode;
|
|
564
|
+
const imageFormatsNode = ((_b = globalThis.loaders) == null ? void 0 : _b.imageFormatsNode) || NODE_FORMAT_SUPPORT;
|
|
565
|
+
return Boolean(parseImageNode2) && imageFormatsNode.includes(mimeType);
|
|
561
566
|
}
|
|
562
567
|
function checkBrowserImageFormatSupport(mimeType) {
|
|
563
568
|
switch (mimeType) {
|
|
@@ -23,12 +23,11 @@ export function isImageFormatSupported(mimeType) {
|
|
|
23
23
|
return mimeTypeSupportedSync[mimeType];
|
|
24
24
|
}
|
|
25
25
|
function checkNodeImageFormatSupport(mimeType) {
|
|
26
|
+
var _globalThis$loaders, _globalThis$loaders2;
|
|
26
27
|
const NODE_FORMAT_SUPPORT = ['image/png', 'image/jpeg', 'image/gif'];
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
} = globalThis;
|
|
31
|
-
return Boolean(_parseImageNode) && _imageFormatsNode.includes(mimeType);
|
|
28
|
+
const parseImageNode = (_globalThis$loaders = globalThis.loaders) === null || _globalThis$loaders === void 0 ? void 0 : _globalThis$loaders.parseImageNode;
|
|
29
|
+
const imageFormatsNode = ((_globalThis$loaders2 = globalThis.loaders) === null || _globalThis$loaders2 === void 0 ? void 0 : _globalThis$loaders2.imageFormatsNode) || NODE_FORMAT_SUPPORT;
|
|
30
|
+
return Boolean(parseImageNode) && imageFormatsNode.includes(mimeType);
|
|
32
31
|
}
|
|
33
32
|
function checkBrowserImageFormatSupport(mimeType) {
|
|
34
33
|
switch (mimeType) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-format.js","names":["isBrowser","MIME_TYPES","mimeTypeSupportedPromise","getSupportedImageFormats","supportedMimeTypes","Set","mimeType","supported","checkBrowserImageFormatSupportAsync","checkNodeImageFormatSupport","add","mimeTypeSupportedSync","isImageFormatSupported","undefined","checkBrowserImageFormatSupport","
|
|
1
|
+
{"version":3,"file":"image-format.js","names":["isBrowser","MIME_TYPES","mimeTypeSupportedPromise","getSupportedImageFormats","supportedMimeTypes","Set","mimeType","supported","checkBrowserImageFormatSupportAsync","checkNodeImageFormatSupport","add","mimeTypeSupportedSync","isImageFormatSupported","undefined","checkBrowserImageFormatSupport","_globalThis$loaders","_globalThis$loaders2","NODE_FORMAT_SUPPORT","parseImageNode","globalThis","loaders","imageFormatsNode","Boolean","includes","testBrowserImageFormatSupport","TEST_IMAGE","dataURL","testBrowserImageFormatSupportAsync","element","document","createElement","toDataURL","indexOf","testImageDataURL","Promise","resolve","image","Image","src","onload","height","onerror"],"sources":["../../../src/lib/category-api/image-format.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {isBrowser} from '@loaders.gl/loader-utils';\n\nconst MIME_TYPES = [\n 'image/png',\n 'image/jpeg',\n 'image/gif',\n 'image/webp',\n 'image/avif',\n 'image/tiff',\n // TODO - what is the correct type for SVG\n 'image/svg',\n 'image/svg+xml',\n 'image/bmp',\n 'image/vnd.microsoft.icon'\n];\n\n/** Only one round of tests is performed */\nconst mimeTypeSupportedPromise: Promise<Set<string>> | null = null;\n\n/** Run-time browser detection of file formats requires async tests for most precise results */\nexport async function getSupportedImageFormats(): Promise<Set<string>> {\n if (mimeTypeSupportedPromise) {\n return await mimeTypeSupportedPromise;\n }\n\n const supportedMimeTypes = new Set<string>();\n for (const mimeType of MIME_TYPES) {\n const supported = isBrowser\n ? await checkBrowserImageFormatSupportAsync(mimeType)\n : checkNodeImageFormatSupport(mimeType);\n if (supported) {\n supportedMimeTypes.add(mimeType);\n }\n }\n\n return supportedMimeTypes;\n}\n\n/** Cache sync values for speed */\nconst mimeTypeSupportedSync: {[mimeType: string]: boolean} = {};\n\n/**\n * Check if image MIME type is supported. Result is cached to avoid repeated tests.\n */\nexport function isImageFormatSupported(mimeType: string): boolean {\n if (mimeTypeSupportedSync[mimeType] === undefined) {\n const supported = isBrowser\n ? checkBrowserImageFormatSupport(mimeType)\n : checkNodeImageFormatSupport(mimeType);\n mimeTypeSupportedSync[mimeType] = supported;\n }\n return mimeTypeSupportedSync[mimeType];\n}\n\n/**\n * Checks that polyfills are installed and that mimeType is supported by polyfills\n * @todo Ideally polyfills should declare what formats they support, instead of storing that data here.\n */\nfunction checkNodeImageFormatSupport(mimeType: string): boolean {\n /** @deprecated Remove these in 4.0 and rely on polyfills to inject them */\n const NODE_FORMAT_SUPPORT = ['image/png', 'image/jpeg', 'image/gif'];\n const parseImageNode = globalThis.loaders?.parseImageNode;\n const imageFormatsNode = globalThis.loaders?.imageFormatsNode || NODE_FORMAT_SUPPORT;\n return Boolean(parseImageNode) && imageFormatsNode.includes(mimeType);\n}\n\n/** Checks image format support synchronously.\n * @note Unreliable, fails on AVIF\n */\nfunction checkBrowserImageFormatSupport(mimeType: string): boolean {\n switch (mimeType) {\n case 'image/avif': // Will fail\n case 'image/webp':\n return testBrowserImageFormatSupport(mimeType);\n default:\n return true;\n }\n}\n\nconst TEST_IMAGE = {\n 'image/avif':\n 'data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=',\n // Lossy test image. Support for lossy images doesn't guarantee support for all WebP images.\n 'image/webp': 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA'\n};\n\n/** Checks WebP and AVIF support asynchronously */\nasync function checkBrowserImageFormatSupportAsync(mimeType: string): Promise<boolean> {\n const dataURL = TEST_IMAGE[mimeType];\n return dataURL ? await testBrowserImageFormatSupportAsync(dataURL) : true;\n}\n\n/**\n * Checks browser synchronously\n * Checks if toDataURL supports the mimeType.\n * @note Imperfect testOn Chrome this is true for WebP but not for AVIF\n */\nfunction testBrowserImageFormatSupport(mimeType: string): boolean {\n try {\n const element = document.createElement('canvas');\n const dataURL = element.toDataURL(mimeType);\n return dataURL.indexOf(`data:${mimeType}`) === 0;\n } catch {\n // Probably Safari...\n return false;\n }\n}\n\n// Check WebPSupport asynchronously\nasync function testBrowserImageFormatSupportAsync(testImageDataURL: string): Promise<boolean> {\n return new Promise((resolve) => {\n const image = new Image();\n image.src = testImageDataURL;\n image.onload = () => resolve(image.height > 0);\n image.onerror = () => resolve(false);\n });\n}\n"],"mappings":"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"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
+
var _globalThis$loaders;
|
|
1
2
|
import { isBrowser } from '@loaders.gl/loader-utils';
|
|
2
|
-
const
|
|
3
|
-
_parseImageNode
|
|
4
|
-
} = globalThis;
|
|
3
|
+
const parseImageNode = (_globalThis$loaders = globalThis.loaders) === null || _globalThis$loaders === void 0 ? void 0 : _globalThis$loaders.parseImageNode;
|
|
5
4
|
const IMAGE_SUPPORTED = typeof Image !== 'undefined';
|
|
6
5
|
const IMAGE_BITMAP_SUPPORTED = typeof ImageBitmap !== 'undefined';
|
|
7
|
-
const NODE_IMAGE_SUPPORTED = Boolean(
|
|
6
|
+
const NODE_IMAGE_SUPPORTED = Boolean(parseImageNode);
|
|
8
7
|
const DATA_SUPPORTED = isBrowser ? true : NODE_IMAGE_SUPPORTED;
|
|
9
8
|
export function isImageTypeSupported(type) {
|
|
10
9
|
switch (type) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-type.js","names":["isBrowser","
|
|
1
|
+
{"version":3,"file":"image-type.js","names":["isBrowser","parseImageNode","_globalThis$loaders","globalThis","loaders","IMAGE_SUPPORTED","Image","IMAGE_BITMAP_SUPPORTED","ImageBitmap","NODE_IMAGE_SUPPORTED","Boolean","DATA_SUPPORTED","isImageTypeSupported","type","Error","getDefaultImageType"],"sources":["../../../src/lib/category-api/image-type.ts"],"sourcesContent":["import {isBrowser} from '@loaders.gl/loader-utils';\nimport type {ImageTypeEnum} from '../../types';\n\n// @ts-ignore TS2339: Property does not exist on type\nconst parseImageNode = globalThis.loaders?.parseImageNode;\n\nconst IMAGE_SUPPORTED = typeof Image !== 'undefined'; // NOTE: \"false\" positives if jsdom is installed\nconst IMAGE_BITMAP_SUPPORTED = typeof ImageBitmap !== 'undefined';\nconst NODE_IMAGE_SUPPORTED = Boolean(parseImageNode);\nconst DATA_SUPPORTED = isBrowser ? true : NODE_IMAGE_SUPPORTED;\n\n/**\n * Checks if a loaders.gl image type is supported\n * @param type image type string\n */\nexport function isImageTypeSupported(type: string): boolean {\n switch (type) {\n case 'auto':\n // Should only ever be false in Node.js, if polyfills have not been installed...\n return IMAGE_BITMAP_SUPPORTED || IMAGE_SUPPORTED || DATA_SUPPORTED;\n\n case 'imagebitmap':\n return IMAGE_BITMAP_SUPPORTED;\n case 'image':\n return IMAGE_SUPPORTED;\n case 'data':\n return DATA_SUPPORTED;\n\n default:\n throw new Error(`@loaders.gl/images: image ${type} not supported in this environment`);\n }\n}\n\n/**\n * Returns the \"most performant\" supported image type on this platform\n * @returns image type string\n */\nexport function getDefaultImageType(): ImageTypeEnum {\n if (IMAGE_BITMAP_SUPPORTED) {\n return 'imagebitmap';\n }\n if (IMAGE_SUPPORTED) {\n return 'image';\n }\n if (DATA_SUPPORTED) {\n return 'data';\n }\n\n // This should only happen in Node.js\n throw new Error('Install \\'@loaders.gl/polyfills\\' to parse images under Node.js');\n}\n"],"mappings":";AAAA,SAAQA,SAAS,QAAO,0BAA0B;AAIlD,MAAMC,cAAc,IAAAC,mBAAA,GAAGC,UAAU,CAACC,OAAO,cAAAF,mBAAA,uBAAlBA,mBAAA,CAAoBD,cAAc;AAEzD,MAAMI,eAAe,GAAG,OAAOC,KAAK,KAAK,WAAW;AACpD,MAAMC,sBAAsB,GAAG,OAAOC,WAAW,KAAK,WAAW;AACjE,MAAMC,oBAAoB,GAAGC,OAAO,CAACT,cAAc,CAAC;AACpD,MAAMU,cAAc,GAAGX,SAAS,GAAG,IAAI,GAAGS,oBAAoB;AAM9D,OAAO,SAASG,oBAAoBA,CAACC,IAAY,EAAW;EAC1D,QAAQA,IAAI;IACV,KAAK,MAAM;MAET,OAAON,sBAAsB,IAAIF,eAAe,IAAIM,cAAc;IAEpE,KAAK,aAAa;MAChB,OAAOJ,sBAAsB;IAC/B,KAAK,OAAO;MACV,OAAOF,eAAe;IACxB,KAAK,MAAM;MACT,OAAOM,cAAc;IAEvB;MACE,MAAM,IAAIG,KAAK,CAAE,6BAA4BD,IAAK,oCAAmC,CAAC;EAC1F;AACF;AAMA,OAAO,SAASE,mBAAmBA,CAAA,EAAkB;EACnD,IAAIR,sBAAsB,EAAE;IAC1B,OAAO,aAAa;EACtB;EACA,IAAIF,eAAe,EAAE;IACnB,OAAO,OAAO;EAChB;EACA,IAAIM,cAAc,EAAE;IAClB,OAAO,MAAM;EACf;EAGA,MAAM,IAAIG,KAAK,CAAC,iEAAiE,CAAC;AACpF"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
+
var _globalThis$loaders;
|
|
1
2
|
import { getImageSize } from "../category-api/parsed-image-api.js";
|
|
2
|
-
const
|
|
3
|
-
_encodeImageNode
|
|
4
|
-
} = globalThis;
|
|
3
|
+
const encodeImageNode = (_globalThis$loaders = globalThis.loaders) === null || _globalThis$loaders === void 0 ? void 0 : _globalThis$loaders.encodeImageNode;
|
|
5
4
|
export async function encodeImage(image, options) {
|
|
6
5
|
options = options || {};
|
|
7
6
|
options.image = options.image || {};
|
|
8
|
-
return
|
|
7
|
+
return encodeImageNode ? encodeImageNode(image, {
|
|
9
8
|
type: options.image.mimeType
|
|
10
9
|
}) : encodeImageInBrowser(image, options);
|
|
11
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode-image.js","names":["getImageSize","
|
|
1
|
+
{"version":3,"file":"encode-image.js","names":["getImageSize","encodeImageNode","_globalThis$loaders","globalThis","loaders","encodeImage","image","options","type","mimeType","encodeImageInBrowser","qualityParamSupported","jpegQuality","width","height","canvas","document","createElement","drawImageToCanvas","blob","Promise","resolve","toBlob","error","Error","arrayBuffer","x","arguments","length","undefined","y","ImageBitmap","context","getContext","transferFromImageBitmap","data","clampedArray","Uint8ClampedArray","imageData","ImageData","putImageData","drawImage"],"sources":["../../../src/lib/encoders/encode-image.ts"],"sourcesContent":["// Image loading/saving for browser and Node.js\nimport {ImageDataType} from '../../types';\nimport {getImageSize} from '../category-api/parsed-image-api';\n\n// @ts-ignore TS2339: Property does not exist on type\nconst encodeImageNode = globalThis.loaders?.encodeImageNode;\n\n/**\n * Returns data bytes representing a compressed image in PNG or JPG format,\n * This data can be saved using file system (f) methods or used in a request.\n * @param image - ImageBitmap Image or Canvas\n * @param options\n * param opt.type='png' - png, jpg or image/png, image/jpg are valid\n * param mimeType= - Whether to include a data URI header\n */\nexport async function encodeImage(\n image: ImageDataType,\n options?: {[key: string]: any}\n): Promise<ArrayBuffer> {\n options = options || {};\n options.image = options.image || ({} as {[key: string]: any});\n\n return encodeImageNode\n ? encodeImageNode(image, {type: options.image.mimeType})\n : encodeImageInBrowser(image, options);\n}\n\n// In case we get exceptions from canvas.toBlob(resolve, type, quality)\nlet qualityParamSupported = true;\n\n/**\n *\n * @param image\n * @param options\n * @note Based on canvas.toBlob\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob\n */\nasync function encodeImageInBrowser(image, options) {\n const {mimeType, jpegQuality} = options.image;\n\n const {width, height} = getImageSize(image);\n\n // create a canvas and resize it to the size of our image\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n\n drawImageToCanvas(image, canvas);\n\n // The actual encoding is done asynchronously with `canvas.toBlob()`\n const blob = await new Promise<Blob | null>((resolve) => {\n // get it back as a Blob\n if (jpegQuality && qualityParamSupported) {\n try {\n canvas.toBlob(resolve, mimeType, jpegQuality);\n return;\n } catch (error) {\n qualityParamSupported = false;\n }\n }\n canvas.toBlob(resolve, mimeType);\n });\n\n if (!blob) {\n throw new Error('image encoding failed');\n }\n\n return await blob.arrayBuffer();\n}\n\nfunction drawImageToCanvas(image, canvas, x = 0, y = 0) {\n // Try optimized path for ImageBitmaps via bitmaprenderer context\n if (x === 0 && y === 0 && typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap) {\n const context = canvas.getContext('bitmaprenderer');\n if (context) {\n // transfer the ImageBitmap to it\n context.transferFromImageBitmap(image);\n return canvas;\n }\n }\n\n // Available on most platforms, except IE11 and Andriod WebViews...\n const context = canvas.getContext('2d');\n if (image.data) {\n // ImageData constructor expects clamped array even though getImageData does not return a clamped array...\n const clampedArray = new Uint8ClampedArray(image.data);\n const imageData = new ImageData(clampedArray, image.width, image.height);\n context.putImageData(imageData, 0, 0);\n return canvas;\n }\n\n // Fall back to generic image/image bitmap rendering path\n context.drawImage(image, 0, 0);\n return canvas;\n}\n"],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { assert } from '@loaders.gl/loader-utils';
|
|
2
2
|
import { getBinaryImageMetadata } from "../category-api/binary-image-api.js";
|
|
3
3
|
export async function parseToNodeImage(arrayBuffer, options) {
|
|
4
|
+
var _globalThis$loaders;
|
|
4
5
|
const {
|
|
5
6
|
mimeType
|
|
6
7
|
} = getBinaryImageMetadata(arrayBuffer) || {};
|
|
7
|
-
const
|
|
8
|
-
assert(
|
|
9
|
-
return await
|
|
8
|
+
const parseImageNode = (_globalThis$loaders = globalThis.loaders) === null || _globalThis$loaders === void 0 ? void 0 : _globalThis$loaders.parseImageNode;
|
|
9
|
+
assert(parseImageNode);
|
|
10
|
+
return await parseImageNode(arrayBuffer, mimeType);
|
|
10
11
|
}
|
|
11
12
|
//# sourceMappingURL=parse-to-node-image.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-to-node-image.js","names":["assert","getBinaryImageMetadata","parseToNodeImage","arrayBuffer","options","mimeType","
|
|
1
|
+
{"version":3,"file":"parse-to-node-image.js","names":["assert","getBinaryImageMetadata","parseToNodeImage","arrayBuffer","options","_globalThis$loaders","mimeType","parseImageNode","globalThis","loaders"],"sources":["../../../src/lib/parsers/parse-to-node-image.ts"],"sourcesContent":["import type {ImageLoaderOptions} from '../../image-loader';\nimport type {ImageDataType} from '../../types';\nimport {assert} from '@loaders.gl/loader-utils';\nimport {getBinaryImageMetadata} from '../category-api/binary-image-api';\n\n// Note: These types should be consistent with loaders.gl/polyfills\n\ntype NDArray = {\n shape: number[];\n data: Uint8Array;\n width: number;\n height: number;\n components: number;\n layers: number[];\n};\n\ntype ParseImageNode = (arrayBuffer: ArrayBuffer, mimeType: string) => Promise<NDArray>;\n\n// Use polyfills if installed to parsed image using get-pixels\nexport async function parseToNodeImage(\n arrayBuffer: ArrayBuffer,\n options: ImageLoaderOptions\n): Promise<ImageDataType> {\n const {mimeType} = getBinaryImageMetadata(arrayBuffer) || {};\n\n // @ts-ignore\n const parseImageNode: ParseImageNode = globalThis.loaders?.parseImageNode;\n assert(parseImageNode); // '@loaders.gl/polyfills not installed'\n\n // @ts-expect-error TODO should we throw error in this case?\n return await parseImageNode(arrayBuffer, mimeType);\n}\n"],"mappings":"AAEA,SAAQA,MAAM,QAAO,0BAA0B;AAAC,SACxCC,sBAAsB;AAgB9B,OAAO,eAAeC,gBAAgBA,CACpCC,WAAwB,EACxBC,OAA2B,EACH;EAAA,IAAAC,mBAAA;EACxB,MAAM;IAACC;EAAQ,CAAC,GAAGL,sBAAsB,CAACE,WAAW,CAAC,IAAI,CAAC,CAAC;EAG5D,MAAMI,cAA8B,IAAAF,mBAAA,GAAGG,UAAU,CAACC,OAAO,cAAAJ,mBAAA,uBAAlBA,mBAAA,CAAoBE,cAAc;EACzEP,MAAM,CAACO,cAAc,CAAC;EAGtB,OAAO,MAAMA,cAAc,CAACJ,WAAW,EAAEG,QAAQ,CAAC;AACpD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/images",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.5",
|
|
4
4
|
"description": "Framework-independent loaders and writers for images (PNG, JPG, ...)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -40,9 +40,9 @@
|
|
|
40
40
|
"build-bundle": "ocular-bundle ./src/index.ts"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@loaders.gl/loader-utils": "4.0.0-beta.
|
|
43
|
+
"@loaders.gl/loader-utils": "4.0.0-beta.5"
|
|
44
44
|
},
|
|
45
|
-
"gitHead": "
|
|
45
|
+
"gitHead": "a6f5a0d1a316cc22396e5a4d480c14329d1ef146",
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@types/get-pixels": "^3.3.2"
|
|
48
48
|
}
|
|
@@ -61,9 +61,9 @@ export function isImageFormatSupported(mimeType: string): boolean {
|
|
|
61
61
|
function checkNodeImageFormatSupport(mimeType: string): boolean {
|
|
62
62
|
/** @deprecated Remove these in 4.0 and rely on polyfills to inject them */
|
|
63
63
|
const NODE_FORMAT_SUPPORT = ['image/png', 'image/jpeg', 'image/gif'];
|
|
64
|
-
|
|
65
|
-
const
|
|
66
|
-
return Boolean(
|
|
64
|
+
const parseImageNode = globalThis.loaders?.parseImageNode;
|
|
65
|
+
const imageFormatsNode = globalThis.loaders?.imageFormatsNode || NODE_FORMAT_SUPPORT;
|
|
66
|
+
return Boolean(parseImageNode) && imageFormatsNode.includes(mimeType);
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
/** Checks image format support synchronously.
|
|
@@ -2,11 +2,11 @@ import {isBrowser} from '@loaders.gl/loader-utils';
|
|
|
2
2
|
import type {ImageTypeEnum} from '../../types';
|
|
3
3
|
|
|
4
4
|
// @ts-ignore TS2339: Property does not exist on type
|
|
5
|
-
const
|
|
5
|
+
const parseImageNode = globalThis.loaders?.parseImageNode;
|
|
6
6
|
|
|
7
7
|
const IMAGE_SUPPORTED = typeof Image !== 'undefined'; // NOTE: "false" positives if jsdom is installed
|
|
8
8
|
const IMAGE_BITMAP_SUPPORTED = typeof ImageBitmap !== 'undefined';
|
|
9
|
-
const NODE_IMAGE_SUPPORTED = Boolean(
|
|
9
|
+
const NODE_IMAGE_SUPPORTED = Boolean(parseImageNode);
|
|
10
10
|
const DATA_SUPPORTED = isBrowser ? true : NODE_IMAGE_SUPPORTED;
|
|
11
11
|
|
|
12
12
|
/**
|
|
@@ -3,7 +3,7 @@ import {ImageDataType} from '../../types';
|
|
|
3
3
|
import {getImageSize} from '../category-api/parsed-image-api';
|
|
4
4
|
|
|
5
5
|
// @ts-ignore TS2339: Property does not exist on type
|
|
6
|
-
const
|
|
6
|
+
const encodeImageNode = globalThis.loaders?.encodeImageNode;
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Returns data bytes representing a compressed image in PNG or JPG format,
|
|
@@ -20,8 +20,8 @@ export async function encodeImage(
|
|
|
20
20
|
options = options || {};
|
|
21
21
|
options.image = options.image || ({} as {[key: string]: any});
|
|
22
22
|
|
|
23
|
-
return
|
|
24
|
-
?
|
|
23
|
+
return encodeImageNode
|
|
24
|
+
? encodeImageNode(image, {type: options.image.mimeType})
|
|
25
25
|
: encodeImageInBrowser(image, options);
|
|
26
26
|
}
|
|
27
27
|
|
|
@@ -24,9 +24,9 @@ export async function parseToNodeImage(
|
|
|
24
24
|
const {mimeType} = getBinaryImageMetadata(arrayBuffer) || {};
|
|
25
25
|
|
|
26
26
|
// @ts-ignore
|
|
27
|
-
const
|
|
28
|
-
assert(
|
|
27
|
+
const parseImageNode: ParseImageNode = globalThis.loaders?.parseImageNode;
|
|
28
|
+
assert(parseImageNode); // '@loaders.gl/polyfills not installed'
|
|
29
29
|
|
|
30
30
|
// @ts-expect-error TODO should we throw error in this case?
|
|
31
|
-
return await
|
|
31
|
+
return await parseImageNode(arrayBuffer, mimeType);
|
|
32
32
|
}
|