@loaders.gl/images 4.2.0-alpha.4 → 4.2.0-alpha.6
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 +87 -40
- package/dist/dist.min.js +9 -0
- package/dist/image-loader.d.ts +1 -1
- package/dist/image-loader.d.ts.map +1 -1
- package/dist/image-loader.js +30 -15
- package/dist/image-writer.d.ts +1 -1
- package/dist/image-writer.d.ts.map +1 -1
- package/dist/image-writer.js +16 -13
- package/dist/index.cjs +23 -22
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.ts +9 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -2
- package/dist/lib/category-api/binary-image-api.js +131 -86
- package/dist/lib/category-api/image-format.js +86 -46
- package/dist/lib/category-api/image-type.d.ts +1 -1
- package/dist/lib/category-api/image-type.d.ts.map +1 -1
- package/dist/lib/category-api/image-type.js +35 -26
- package/dist/lib/category-api/parse-isobmff-binary.js +81 -29
- package/dist/lib/category-api/parsed-image-api.d.ts +1 -1
- package/dist/lib/category-api/parsed-image-api.d.ts.map +1 -1
- package/dist/lib/category-api/parsed-image-api.js +49 -41
- package/dist/lib/encoders/encode-image.d.ts +1 -1
- package/dist/lib/encoders/encode-image.d.ts.map +1 -1
- package/dist/lib/encoders/encode-image.js +67 -51
- package/dist/lib/parsers/parse-image.d.ts +2 -2
- package/dist/lib/parsers/parse-image.d.ts.map +1 -1
- package/dist/lib/parsers/parse-image.js +41 -34
- package/dist/lib/parsers/parse-to-image-bitmap.d.ts +1 -1
- package/dist/lib/parsers/parse-to-image-bitmap.d.ts.map +1 -1
- package/dist/lib/parsers/parse-to-image-bitmap.js +45 -27
- package/dist/lib/parsers/parse-to-image.d.ts +1 -1
- package/dist/lib/parsers/parse-to-image.d.ts.map +1 -1
- package/dist/lib/parsers/parse-to-image.js +38 -26
- package/dist/lib/parsers/parse-to-node-image.d.ts +2 -2
- package/dist/lib/parsers/parse-to-node-image.d.ts.map +1 -1
- package/dist/lib/parsers/parse-to-node-image.js +7 -8
- package/dist/lib/parsers/svg-utils.js +27 -19
- package/dist/lib/utils/version.js +4 -2
- package/dist/types.js +0 -1
- package/package.json +10 -6
- package/dist/image-loader.js.map +0 -1
- package/dist/image-writer.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/category-api/binary-image-api.js.map +0 -1
- package/dist/lib/category-api/image-format.js.map +0 -1
- package/dist/lib/category-api/image-type.js.map +0 -1
- package/dist/lib/category-api/parse-isobmff-binary.js.map +0 -1
- package/dist/lib/category-api/parsed-image-api.js.map +0 -1
- package/dist/lib/encoders/encode-image.js.map +0 -1
- package/dist/lib/parsers/parse-image.js.map +0 -1
- package/dist/lib/parsers/parse-to-image-bitmap.js.map +0 -1
- package/dist/lib/parsers/parse-to-image.js.map +0 -1
- package/dist/lib/parsers/parse-to-node-image.js.map +0 -1
- package/dist/lib/parsers/svg-utils.js.map +0 -1
- package/dist/lib/utils/version.js.map +0 -1
- package/dist/types.js.map +0 -1
package/dist/dist.dev.js
CHANGED
|
@@ -2,14 +2,19 @@
|
|
|
2
2
|
if (typeof exports === 'object' && typeof module === 'object')
|
|
3
3
|
module.exports = factory();
|
|
4
4
|
else if (typeof define === 'function' && define.amd) define([], factory);
|
|
5
|
-
else if (typeof exports === 'object') exports['
|
|
6
|
-
else root['
|
|
5
|
+
else if (typeof exports === 'object') exports['loaders'] = factory();
|
|
6
|
+
else root['loaders'] = factory();})(globalThis, function () {
|
|
7
7
|
"use strict";
|
|
8
8
|
var __exports__ = (() => {
|
|
9
|
+
var __create = Object.create;
|
|
9
10
|
var __defProp = Object.defineProperty;
|
|
10
11
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
11
12
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
13
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
12
14
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
15
|
+
var __commonJS = (cb, mod) => function __require() {
|
|
16
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
17
|
+
};
|
|
13
18
|
var __export = (target, all) => {
|
|
14
19
|
for (var name in all)
|
|
15
20
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -22,11 +27,27 @@ var __exports__ = (() => {
|
|
|
22
27
|
}
|
|
23
28
|
return to;
|
|
24
29
|
};
|
|
30
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
31
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
32
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
33
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
34
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
35
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
36
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
37
|
+
mod
|
|
38
|
+
));
|
|
25
39
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
26
40
|
|
|
27
|
-
//
|
|
28
|
-
var
|
|
29
|
-
|
|
41
|
+
// external-global-plugin:@loaders.gl/core
|
|
42
|
+
var require_core = __commonJS({
|
|
43
|
+
"external-global-plugin:@loaders.gl/core"(exports, module) {
|
|
44
|
+
module.exports = globalThis.loaders;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
// bundle.ts
|
|
49
|
+
var bundle_exports = {};
|
|
50
|
+
__export(bundle_exports, {
|
|
30
51
|
ImageLoader: () => ImageLoader,
|
|
31
52
|
ImageWriter: () => ImageWriter,
|
|
32
53
|
getBinaryImageMetadata: () => getBinaryImageMetadata,
|
|
@@ -40,9 +61,10 @@ var __exports__ = (() => {
|
|
|
40
61
|
isImageTypeSupported: () => isImageTypeSupported,
|
|
41
62
|
loadImage: () => loadImage
|
|
42
63
|
});
|
|
64
|
+
__reExport(bundle_exports, __toESM(require_core(), 1));
|
|
43
65
|
|
|
44
66
|
// src/lib/utils/version.ts
|
|
45
|
-
var VERSION =
|
|
67
|
+
var VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
46
68
|
|
|
47
69
|
// ../loader-utils/src/lib/env-utils/assert.ts
|
|
48
70
|
function assert(condition, message) {
|
|
@@ -62,7 +84,10 @@ var __exports__ = (() => {
|
|
|
62
84
|
var window_ = globals.window || globals.self || globals.global || {};
|
|
63
85
|
var global_ = globals.global || globals.self || globals.window || {};
|
|
64
86
|
var document_ = globals.document || {};
|
|
65
|
-
var isBrowser =
|
|
87
|
+
var isBrowser = (
|
|
88
|
+
// @ts-ignore process does not exist on browser
|
|
89
|
+
Boolean(typeof process !== "object" || String(process) !== "[object process]" || process.browser)
|
|
90
|
+
);
|
|
66
91
|
var matches = typeof process !== "undefined" && process.version && /v([0-9]*)/.exec(process.version);
|
|
67
92
|
var nodeVersion = matches && parseFloat(matches[1]) || 0;
|
|
68
93
|
|
|
@@ -257,10 +282,7 @@ var __exports__ = (() => {
|
|
|
257
282
|
switch (brandMajor) {
|
|
258
283
|
case "avif":
|
|
259
284
|
case "avis":
|
|
260
|
-
return {
|
|
261
|
-
extension: "avif",
|
|
262
|
-
mimeType: "image/avif"
|
|
263
|
-
};
|
|
285
|
+
return { extension: "avif", mimeType: "image/avif" };
|
|
264
286
|
default:
|
|
265
287
|
return null;
|
|
266
288
|
}
|
|
@@ -296,6 +318,7 @@ var __exports__ = (() => {
|
|
|
296
318
|
}
|
|
297
319
|
return {
|
|
298
320
|
mimeType: mediaType.mimeType,
|
|
321
|
+
// TODO - decode width and height
|
|
299
322
|
width: 0,
|
|
300
323
|
height: 0
|
|
301
324
|
};
|
|
@@ -342,10 +365,7 @@ var __exports__ = (() => {
|
|
|
342
365
|
if (!isJpeg) {
|
|
343
366
|
return null;
|
|
344
367
|
}
|
|
345
|
-
const {
|
|
346
|
-
tableMarkers,
|
|
347
|
-
sofMarkers
|
|
348
|
-
} = getJpegMarkers();
|
|
368
|
+
const { tableMarkers, sofMarkers } = getJpegMarkers();
|
|
349
369
|
let i = 2;
|
|
350
370
|
while (i + 9 < dataView.byteLength) {
|
|
351
371
|
const marker = dataView.getUint16(i, BIG_ENDIAN);
|
|
@@ -353,7 +373,9 @@ var __exports__ = (() => {
|
|
|
353
373
|
return {
|
|
354
374
|
mimeType: "image/jpeg",
|
|
355
375
|
height: dataView.getUint16(i + 5, BIG_ENDIAN),
|
|
376
|
+
// Number of lines
|
|
356
377
|
width: dataView.getUint16(i + 7, BIG_ENDIAN)
|
|
378
|
+
// Number of pixels per line
|
|
357
379
|
};
|
|
358
380
|
}
|
|
359
381
|
if (!tableMarkers.has(marker)) {
|
|
@@ -369,11 +391,23 @@ var __exports__ = (() => {
|
|
|
369
391
|
for (let i = 65504; i < 65520; ++i) {
|
|
370
392
|
tableMarkers.add(i);
|
|
371
393
|
}
|
|
372
|
-
const sofMarkers = /* @__PURE__ */ new Set([
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
394
|
+
const sofMarkers = /* @__PURE__ */ new Set([
|
|
395
|
+
65472,
|
|
396
|
+
65473,
|
|
397
|
+
65474,
|
|
398
|
+
65475,
|
|
399
|
+
65477,
|
|
400
|
+
65478,
|
|
401
|
+
65479,
|
|
402
|
+
65481,
|
|
403
|
+
65482,
|
|
404
|
+
65483,
|
|
405
|
+
65485,
|
|
406
|
+
65486,
|
|
407
|
+
65487,
|
|
408
|
+
65502
|
|
409
|
+
]);
|
|
410
|
+
return { tableMarkers, sofMarkers };
|
|
377
411
|
}
|
|
378
412
|
function toDataView(data) {
|
|
379
413
|
if (data instanceof DataView) {
|
|
@@ -390,9 +424,7 @@ var __exports__ = (() => {
|
|
|
390
424
|
|
|
391
425
|
// src/lib/parsers/parse-to-node-image.ts
|
|
392
426
|
async function parseToNodeImage(arrayBuffer, options) {
|
|
393
|
-
const {
|
|
394
|
-
mimeType
|
|
395
|
-
} = getBinaryImageMetadata(arrayBuffer) || {};
|
|
427
|
+
const { mimeType } = getBinaryImageMetadata(arrayBuffer) || {};
|
|
396
428
|
const parseImageNode2 = globalThis.loaders?.parseImageNode;
|
|
397
429
|
assert(parseImageNode2);
|
|
398
430
|
return await parseImageNode2(arrayBuffer, mimeType);
|
|
@@ -403,9 +435,7 @@ var __exports__ = (() => {
|
|
|
403
435
|
options = options || {};
|
|
404
436
|
const imageOptions = options.image || {};
|
|
405
437
|
const imageType = imageOptions.type || "auto";
|
|
406
|
-
const {
|
|
407
|
-
url
|
|
408
|
-
} = context || {};
|
|
438
|
+
const { url } = context || {};
|
|
409
439
|
const loadType = getLoadableImageType(imageType);
|
|
410
440
|
let image;
|
|
411
441
|
switch (loadType) {
|
|
@@ -439,12 +469,23 @@ var __exports__ = (() => {
|
|
|
439
469
|
|
|
440
470
|
// src/image-loader.ts
|
|
441
471
|
var EXTENSIONS = ["png", "jpg", "jpeg", "gif", "webp", "bmp", "ico", "svg", "avif"];
|
|
442
|
-
var MIME_TYPES = [
|
|
472
|
+
var MIME_TYPES = [
|
|
473
|
+
"image/png",
|
|
474
|
+
"image/jpeg",
|
|
475
|
+
"image/gif",
|
|
476
|
+
"image/webp",
|
|
477
|
+
"image/avif",
|
|
478
|
+
"image/bmp",
|
|
479
|
+
"image/vnd.microsoft.icon",
|
|
480
|
+
"image/svg+xml"
|
|
481
|
+
];
|
|
443
482
|
var DEFAULT_IMAGE_LOADER_OPTIONS = {
|
|
444
483
|
image: {
|
|
445
484
|
type: "auto",
|
|
446
485
|
decode: true
|
|
486
|
+
// if format is HTML
|
|
447
487
|
}
|
|
488
|
+
// imagebitmap: {} - passes (platform dependent) parameters to ImageBitmap constructor
|
|
448
489
|
};
|
|
449
490
|
var ImageLoader = {
|
|
450
491
|
id: "image",
|
|
@@ -454,6 +495,7 @@ var __exports__ = (() => {
|
|
|
454
495
|
mimeTypes: MIME_TYPES,
|
|
455
496
|
extensions: EXTENSIONS,
|
|
456
497
|
parse: parseImage,
|
|
498
|
+
// TODO: byteOffset, byteLength;
|
|
457
499
|
tests: [(arrayBuffer) => Boolean(getBinaryImageMetadata(new DataView(arrayBuffer)))],
|
|
458
500
|
options: DEFAULT_IMAGE_LOADER_OPTIONS
|
|
459
501
|
};
|
|
@@ -463,20 +505,12 @@ var __exports__ = (() => {
|
|
|
463
505
|
async function encodeImage(image, options) {
|
|
464
506
|
options = options || {};
|
|
465
507
|
options.image = options.image || {};
|
|
466
|
-
return encodeImageNode ? encodeImageNode(image, {
|
|
467
|
-
type: options.image.mimeType
|
|
468
|
-
}) : encodeImageInBrowser(image, options);
|
|
508
|
+
return encodeImageNode ? encodeImageNode(image, { type: options.image.mimeType }) : encodeImageInBrowser(image, options);
|
|
469
509
|
}
|
|
470
510
|
var qualityParamSupported = true;
|
|
471
511
|
async function encodeImageInBrowser(image, options) {
|
|
472
|
-
const {
|
|
473
|
-
|
|
474
|
-
jpegQuality
|
|
475
|
-
} = options.image;
|
|
476
|
-
const {
|
|
477
|
-
width,
|
|
478
|
-
height
|
|
479
|
-
} = getImageSize(image);
|
|
512
|
+
const { mimeType, jpegQuality } = options.image;
|
|
513
|
+
const { width, height } = getImageSize(image);
|
|
480
514
|
const canvas = document.createElement("canvas");
|
|
481
515
|
canvas.width = width;
|
|
482
516
|
canvas.height = height;
|
|
@@ -533,7 +567,19 @@ var __exports__ = (() => {
|
|
|
533
567
|
};
|
|
534
568
|
|
|
535
569
|
// src/lib/category-api/image-format.ts
|
|
536
|
-
var MIME_TYPES2 = [
|
|
570
|
+
var MIME_TYPES2 = [
|
|
571
|
+
"image/png",
|
|
572
|
+
"image/jpeg",
|
|
573
|
+
"image/gif",
|
|
574
|
+
"image/webp",
|
|
575
|
+
"image/avif",
|
|
576
|
+
"image/tiff",
|
|
577
|
+
// TODO - what is the correct type for SVG
|
|
578
|
+
"image/svg",
|
|
579
|
+
"image/svg+xml",
|
|
580
|
+
"image/bmp",
|
|
581
|
+
"image/vnd.microsoft.icon"
|
|
582
|
+
];
|
|
537
583
|
var mimeTypeSupportedPromise = null;
|
|
538
584
|
async function getSupportedImageFormats() {
|
|
539
585
|
if (mimeTypeSupportedPromise) {
|
|
@@ -573,6 +619,7 @@ var __exports__ = (() => {
|
|
|
573
619
|
}
|
|
574
620
|
var TEST_IMAGE = {
|
|
575
621
|
"image/avif": "data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=",
|
|
622
|
+
// Lossy test image. Support for lossy images doesn't guarantee support for all WebP images.
|
|
576
623
|
"image/webp": "data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA"
|
|
577
624
|
};
|
|
578
625
|
async function checkBrowserImageFormatSupportAsync(mimeType) {
|
|
@@ -601,7 +648,7 @@ var __exports__ = (() => {
|
|
|
601
648
|
function loadImage() {
|
|
602
649
|
throw new Error("loadImage has moved to @loaders.gl/textures");
|
|
603
650
|
}
|
|
604
|
-
return __toCommonJS(
|
|
651
|
+
return __toCommonJS(bundle_exports);
|
|
605
652
|
})();
|
|
606
653
|
return __exports__;
|
|
607
654
|
});
|
package/dist/dist.min.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
(function webpackUniversalModuleDefinition(root, factory) {
|
|
2
|
+
if (typeof exports === 'object' && typeof module === 'object')
|
|
3
|
+
module.exports = factory();
|
|
4
|
+
else if (typeof define === 'function' && define.amd) define([], factory);
|
|
5
|
+
else if (typeof exports === 'object') exports['loaders'] = factory();
|
|
6
|
+
else root['loaders'] = factory();})(globalThis, function () {
|
|
7
|
+
"use strict";var __exports__=(()=>{var q=Object.create;var x=Object.defineProperty;var ee=Object.getOwnPropertyDescriptor;var te=Object.getOwnPropertyNames;var re=Object.getPrototypeOf,oe=Object.prototype.hasOwnProperty;var ae=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),ne=(e,t)=>{for(var r in t)x(e,r,{get:t[r],enumerable:!0})},w=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of te(t))!oe.call(e,a)&&a!==r&&x(e,a,{get:()=>t[a],enumerable:!(o=ee(t,a))||o.enumerable});return e},I=(e,t,r)=>(w(e,t,"default"),r&&w(r,t,"default")),ie=(e,t,r)=>(r=e!=null?q(re(e)):{},w(t||!e||!e.__esModule?x(r,"default",{value:e,enumerable:!0}):r,e)),se=e=>w(x({},"__esModule",{value:!0}),e);var k=ae((Je,V)=>{V.exports=globalThis.loaders});var l={};ne(l,{ImageLoader:()=>Q,ImageWriter:()=>Z,getBinaryImageMetadata:()=>g,getDefaultImageType:()=>B,getImageData:()=>A,getImageSize:()=>b,getImageType:()=>F,getSupportedImageFormats:()=>z,isImage:()=>v,isImageFormatSupported:()=>H,isImageTypeSupported:()=>h,loadImage:()=>We});I(l,ie(k(),1));var y="4.2.0-alpha.5";function p(e,t){if(!e)throw new Error(t||"loader assertion failed.")}var s={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},me=s.self||s.window||s.global||{},fe=s.window||s.self||s.global||{},ce=s.global||s.self||s.window||{},ge=s.document||{};var c=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var O=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),pe=O&&parseFloat(O[1])||0;var Ae=globalThis.loaders?.parseImageNode,E=typeof Image<"u",D=typeof ImageBitmap<"u",de=Boolean(Ae),U=c?!0:de;function h(e){switch(e){case"auto":return D||E||U;case"imagebitmap":return D;case"image":return E;case"data":return U;default:throw new Error(`@loaders.gl/images: image ${e} not supported in this environment`)}}function B(){if(D)return"imagebitmap";if(E)return"image";if(U)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function v(e){return Boolean(L(e))}function F(e){let t=L(e);if(!t)throw new Error("Not an image");return t}function b(e){return A(e)}function A(e){switch(F(e)){case"data":return e;case"image":case"imagebitmap":let t=document.createElement("canvas"),r=t.getContext("2d");if(!r)throw new Error("getImageData");return t.width=e.width,t.height=e.height,r.drawImage(e,0,0),r.getImageData(0,0,e.width,e.height);default:throw new Error("getImageData")}}function L(e){return typeof ImageBitmap<"u"&&e instanceof ImageBitmap?"imagebitmap":typeof Image<"u"&&e instanceof Image?"image":e&&typeof e=="object"&&e.data&&e.width&&e.height?"data":null}var ue=/^data:image\/svg\+xml/,le=/\.svg((\?|#).*)?$/;function T(e){return e&&(ue.test(e)||le.test(e))}function R(e,t){if(T(t)){let o=new TextDecoder().decode(e);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(o=unescape(encodeURIComponent(o)))}catch(n){throw new Error(n.message)}return`data:image/svg+xml;base64,${btoa(o)}`}return N(e,t)}function N(e,t){if(T(t))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(e)])}async function S(e,t,r){let o=R(e,r),a=self.URL||self.webkitURL,n=typeof o!="string"&&a.createObjectURL(o);try{return await we(n||o,t)}finally{n&&a.revokeObjectURL(n)}}async function we(e,t){let r=new Image;return r.src=e,t.image&&t.image.decode&&r.decode?(await r.decode(),r):await new Promise((o,a)=>{try{r.onload=()=>o(r),r.onerror=n=>{let i=n instanceof Error?n.message:"error";a(new Error(i))}}catch(n){a(n)}})}var xe={},_=!0;async function G(e,t,r){let o;T(r)?o=await S(e,t,r):o=N(e,r);let a=t&&t.imagebitmap;return await Ie(o,a)}async function Ie(e,t=null){if((ye(t)||!_)&&(t=null),t)try{return await createImageBitmap(e,t)}catch(r){console.warn(r),_=!1}return await createImageBitmap(e)}function ye(e){for(let t in e||xe)return!1;return!0}function j(e){return!Te(e,"ftyp",4)||!(e[8]&96)?null:he(e)}function he(e){switch(Be(e,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function Be(e,t,r){return String.fromCharCode(...e.slice(t,r))}function be(e){return[...e].map(t=>t.charCodeAt(0))}function Te(e,t,r=0){let o=be(t);for(let a=0;a<o.length;++a)if(o[a]!==e[a+r])return!1;return!0}var m=!1,d=!0;function g(e){let t=u(e);return Ee(t)||Fe(t)||De(t)||Ue(t)||Se(t)}function Se(e){let t=new Uint8Array(e instanceof DataView?e.buffer:e),r=j(t);return r?{mimeType:r.mimeType,width:0,height:0}:null}function Ee(e){let t=u(e);return t.byteLength>=24&&t.getUint32(0,m)===2303741511?{mimeType:"image/png",width:t.getUint32(16,m),height:t.getUint32(20,m)}:null}function De(e){let t=u(e);return t.byteLength>=10&&t.getUint32(0,m)===1195984440?{mimeType:"image/gif",width:t.getUint16(6,d),height:t.getUint16(8,d)}:null}function Ue(e){let t=u(e);return t.byteLength>=14&&t.getUint16(0,m)===16973&&t.getUint32(2,d)===t.byteLength?{mimeType:"image/bmp",width:t.getUint32(18,d),height:t.getUint32(22,d)}:null}function Fe(e){let t=u(e);if(!(t.byteLength>=3&&t.getUint16(0,m)===65496&&t.getUint8(2)===255))return null;let{tableMarkers:o,sofMarkers:a}=Ne(),n=2;for(;n+9<t.byteLength;){let i=t.getUint16(n,m);if(a.has(i))return{mimeType:"image/jpeg",height:t.getUint16(n+5,m),width:t.getUint16(n+7,m)};if(!o.has(i))return null;n+=2,n+=t.getUint16(n,m)}return null}function Ne(){let e=new Set([65499,65476,65484,65501,65534]);for(let r=65504;r<65520;++r)e.add(r);return{tableMarkers:e,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function u(e){if(e instanceof DataView)return e;if(ArrayBuffer.isView(e))return new DataView(e.buffer);if(e instanceof ArrayBuffer)return new DataView(e);throw new Error("toDataView")}async function C(e,t){let{mimeType:r}=g(e)||{},o=globalThis.loaders?.parseImageNode;return p(o),await o(e,r)}async function W(e,t,r){t=t||{};let a=(t.image||{}).type||"auto",{url:n}=r||{},i=Me(a),f;switch(i){case"imagebitmap":f=await G(e,t,n);break;case"image":f=await S(e,t,n);break;case"data":f=await C(e,t);break;default:p(!1)}return a==="data"&&(f=A(f)),f}function Me(e){switch(e){case"auto":case"data":return B();default:return h(e),e}}var Pe=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],Ve=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],ke={image:{type:"auto",decode:!0}},Q={id:"image",module:"images",name:"Images",version:y,mimeTypes:Ve,extensions:Pe,parse:W,tests:[e=>Boolean(g(new DataView(e)))],options:ke};var Y=globalThis.loaders?.encodeImageNode;async function X(e,t){return t=t||{},t.image=t.image||{},Y?Y(e,{type:t.image.mimeType}):Oe(e,t)}var J=!0;async function Oe(e,t){let{mimeType:r,jpegQuality:o}=t.image,{width:a,height:n}=b(e),i=document.createElement("canvas");i.width=a,i.height=n,ve(e,i);let f=await new Promise(P=>{if(o&&J)try{i.toBlob(P,r,o);return}catch{J=!1}i.toBlob(P,r)});if(!f)throw new Error("image encoding failed");return await f.arrayBuffer()}function ve(e,t,r=0,o=0){if(r===0&&o===0&&typeof ImageBitmap<"u"&&e instanceof ImageBitmap){let n=t.getContext("bitmaprenderer");if(n)return n.transferFromImageBitmap(e),t}let a=t.getContext("2d");if(e.data){let n=new Uint8ClampedArray(e.data),i=new ImageData(n,e.width,e.height);return a.putImageData(i,0,0),t}return a.drawImage(e,0,0),t}var Z={name:"Images",id:"image",module:"images",version:y,extensions:["jpeg"],options:{image:{mimeType:"image/png",jpegQuality:null}},encode:X};var Le=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/tiff","image/svg","image/svg+xml","image/bmp","image/vnd.microsoft.icon"],$=null;async function z(){if($)return await $;let e=new Set;for(let t of Le)(c?await Ge(t):K(t))&&e.add(t);return e}var M={};function H(e){if(M[e]===void 0){let t=c?Re(e):K(e);M[e]=t}return M[e]}function K(e){let t=["image/png","image/jpeg","image/gif"],r=globalThis.loaders?.imageFormatsNode||t,o=globalThis.loaders?.parseImageNode;return Boolean(o)&&r.includes(e)}function Re(e){switch(e){case"image/avif":case"image/webp":return je(e);default:return!0}}var _e={"image/avif":"data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=","image/webp":"data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA"};async function Ge(e){let t=_e[e];return t?await Ce(t):!0}function je(e){try{return document.createElement("canvas").toDataURL(e).indexOf(`data:${e}`)===0}catch{return!1}}async function Ce(e){return new Promise(t=>{let r=new Image;r.src=e,r.onload=()=>t(r.height>0),r.onerror=()=>t(!1)})}function We(){throw new Error("loadImage has moved to @loaders.gl/textures")}return se(l);})();
|
|
8
|
+
return __exports__;
|
|
9
|
+
});
|
package/dist/image-loader.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { LoaderOptions, LoaderWithParser } from '@loaders.gl/loader-utils';
|
|
2
|
-
import type { ImageType } from
|
|
2
|
+
import type { ImageType } from "./types.js";
|
|
3
3
|
export type ImageLoaderOptions = LoaderOptions & {
|
|
4
4
|
image?: {
|
|
5
5
|
type?: 'auto' | 'data' | 'imagebitmap' | 'image';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-loader.d.ts","sourceRoot":"","sources":["../src/image-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAE,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC9E,OAAO,KAAK,EAAC,SAAS,EAAC,
|
|
1
|
+
{"version":3,"file":"image-loader.d.ts","sourceRoot":"","sources":["../src/image-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAE,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC9E,OAAO,KAAK,EAAC,SAAS,EAAC,mBAAgB;AAkBvC,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC;QACjD,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC,CAAC;AAUF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,kBAAkB,CAW9E,CAAC"}
|
package/dist/image-loader.js
CHANGED
|
@@ -1,23 +1,38 @@
|
|
|
1
|
+
// import type { ImageType } from '@loaders.gl/schema';
|
|
1
2
|
import { VERSION } from "./lib/utils/version.js";
|
|
2
3
|
import { parseImage } from "./lib/parsers/parse-image.js";
|
|
3
4
|
import { getBinaryImageMetadata } from "./lib/category-api/binary-image-api.js";
|
|
4
5
|
const EXTENSIONS = ['png', 'jpg', 'jpeg', 'gif', 'webp', 'bmp', 'ico', 'svg', 'avif'];
|
|
5
|
-
const MIME_TYPES = [
|
|
6
|
+
const MIME_TYPES = [
|
|
7
|
+
'image/png',
|
|
8
|
+
'image/jpeg',
|
|
9
|
+
'image/gif',
|
|
10
|
+
'image/webp',
|
|
11
|
+
'image/avif',
|
|
12
|
+
'image/bmp',
|
|
13
|
+
'image/vnd.microsoft.icon',
|
|
14
|
+
'image/svg+xml'
|
|
15
|
+
];
|
|
6
16
|
const DEFAULT_IMAGE_LOADER_OPTIONS = {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
17
|
+
image: {
|
|
18
|
+
type: 'auto',
|
|
19
|
+
decode: true // if format is HTML
|
|
20
|
+
}
|
|
21
|
+
// imagebitmap: {} - passes (platform dependent) parameters to ImageBitmap constructor
|
|
11
22
|
};
|
|
23
|
+
/**
|
|
24
|
+
* Loads a platform-specific image type
|
|
25
|
+
* Note: This type can be used as input data to WebGL texture creation
|
|
26
|
+
*/
|
|
12
27
|
export const ImageLoader = {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
28
|
+
id: 'image',
|
|
29
|
+
module: 'images',
|
|
30
|
+
name: 'Images',
|
|
31
|
+
version: VERSION,
|
|
32
|
+
mimeTypes: MIME_TYPES,
|
|
33
|
+
extensions: EXTENSIONS,
|
|
34
|
+
parse: parseImage,
|
|
35
|
+
// TODO: byteOffset, byteLength;
|
|
36
|
+
tests: [(arrayBuffer) => Boolean(getBinaryImageMetadata(new DataView(arrayBuffer)))],
|
|
37
|
+
options: DEFAULT_IMAGE_LOADER_OPTIONS
|
|
22
38
|
};
|
|
23
|
-
//# sourceMappingURL=image-loader.js.map
|
package/dist/image-writer.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { WriterWithEncoder, WriterOptions } from '@loaders.gl/loader-utils';
|
|
2
|
-
import type { ImageDataType } from
|
|
2
|
+
import type { ImageDataType } from "./types.js";
|
|
3
3
|
export type ImageWriterOptions = WriterOptions & {
|
|
4
4
|
image?: {
|
|
5
5
|
mimeType?: 'image/png';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-writer.d.ts","sourceRoot":"","sources":["../src/image-writer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,iBAAiB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAC/E,OAAO,KAAK,EAAC,aAAa,EAAC,
|
|
1
|
+
{"version":3,"file":"image-writer.d.ts","sourceRoot":"","sources":["../src/image-writer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,iBAAiB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAC/E,OAAO,KAAK,EAAC,aAAa,EAAC,mBAAgB;AAI3C,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,KAAK,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,WAAW,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC7B,CAAC;CACH,CAAC;AAEF,4BAA4B;AAC5B,eAAO,MAAM,WAAW,EAAE,iBAAiB,CAAC,aAAa,EAAE,KAAK,EAAE,kBAAkB,CAanF,CAAC"}
|
package/dist/image-writer.js
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
1
4
|
import { VERSION } from "./lib/utils/version.js";
|
|
2
5
|
import { encodeImage } from "./lib/encoders/encode-image.js";
|
|
6
|
+
/** Writer for image data */
|
|
3
7
|
export const ImageWriter = {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
name: 'Images',
|
|
9
|
+
id: 'image',
|
|
10
|
+
module: 'images',
|
|
11
|
+
version: VERSION,
|
|
12
|
+
extensions: ['jpeg'],
|
|
13
|
+
options: {
|
|
14
|
+
image: {
|
|
15
|
+
mimeType: 'image/png',
|
|
16
|
+
jpegQuality: null
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
encode: encodeImage
|
|
16
20
|
};
|
|
17
|
-
//# sourceMappingURL=image-writer.js.map
|
package/dist/index.cjs
CHANGED
|
@@ -17,9 +17,9 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
|
|
20
|
-
//
|
|
21
|
-
var
|
|
22
|
-
__export(
|
|
20
|
+
// dist/index.js
|
|
21
|
+
var dist_exports = {};
|
|
22
|
+
__export(dist_exports, {
|
|
23
23
|
ImageLoader: () => ImageLoader,
|
|
24
24
|
ImageWriter: () => ImageWriter,
|
|
25
25
|
getBinaryImageMetadata: () => getBinaryImageMetadata,
|
|
@@ -33,15 +33,15 @@ __export(src_exports, {
|
|
|
33
33
|
isImageTypeSupported: () => isImageTypeSupported,
|
|
34
34
|
loadImage: () => loadImage
|
|
35
35
|
});
|
|
36
|
-
module.exports = __toCommonJS(
|
|
36
|
+
module.exports = __toCommonJS(dist_exports);
|
|
37
37
|
|
|
38
|
-
//
|
|
39
|
-
var VERSION =
|
|
38
|
+
// dist/lib/utils/version.js
|
|
39
|
+
var VERSION = true ? "4.2.0-alpha.5" : "latest";
|
|
40
40
|
|
|
41
|
-
//
|
|
41
|
+
// dist/lib/parsers/parse-image.js
|
|
42
42
|
var import_loader_utils3 = require("@loaders.gl/loader-utils");
|
|
43
43
|
|
|
44
|
-
//
|
|
44
|
+
// dist/lib/category-api/image-type.js
|
|
45
45
|
var import_loader_utils = require("@loaders.gl/loader-utils");
|
|
46
46
|
var _a;
|
|
47
47
|
var parseImageNode = (_a = globalThis.loaders) == null ? void 0 : _a.parseImageNode;
|
|
@@ -76,7 +76,7 @@ function getDefaultImageType() {
|
|
|
76
76
|
throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js");
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
//
|
|
79
|
+
// dist/lib/category-api/parsed-image-api.js
|
|
80
80
|
function isImage(image) {
|
|
81
81
|
return Boolean(getImageTypeOrNull(image));
|
|
82
82
|
}
|
|
@@ -122,7 +122,7 @@ function getImageTypeOrNull(image) {
|
|
|
122
122
|
return null;
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
-
//
|
|
125
|
+
// dist/lib/parsers/svg-utils.js
|
|
126
126
|
var SVG_DATA_URL_PATTERN = /^data:image\/svg\+xml/;
|
|
127
127
|
var SVG_URL_PATTERN = /\.svg((\?|#).*)?$/;
|
|
128
128
|
function isSVG(url) {
|
|
@@ -151,7 +151,7 @@ function getBlob(arrayBuffer, url) {
|
|
|
151
151
|
return new Blob([new Uint8Array(arrayBuffer)]);
|
|
152
152
|
}
|
|
153
153
|
|
|
154
|
-
//
|
|
154
|
+
// dist/lib/parsers/parse-to-image.js
|
|
155
155
|
async function parseToImage(arrayBuffer, options, url) {
|
|
156
156
|
const blobOrDataUrl = getBlobOrSVGDataUrl(arrayBuffer, url);
|
|
157
157
|
const URL = self.URL || self.webkitURL;
|
|
@@ -184,7 +184,7 @@ async function loadToImage(url, options) {
|
|
|
184
184
|
});
|
|
185
185
|
}
|
|
186
186
|
|
|
187
|
-
//
|
|
187
|
+
// dist/lib/parsers/parse-to-image-bitmap.js
|
|
188
188
|
var EMPTY_OBJECT = {};
|
|
189
189
|
var imagebitmapOptionsSupported = true;
|
|
190
190
|
async function parseToImageBitmap(arrayBuffer, options, url) {
|
|
@@ -219,10 +219,10 @@ function isEmptyObject(object) {
|
|
|
219
219
|
return true;
|
|
220
220
|
}
|
|
221
221
|
|
|
222
|
-
//
|
|
222
|
+
// dist/lib/parsers/parse-to-node-image.js
|
|
223
223
|
var import_loader_utils2 = require("@loaders.gl/loader-utils");
|
|
224
224
|
|
|
225
|
-
//
|
|
225
|
+
// dist/lib/category-api/parse-isobmff-binary.js
|
|
226
226
|
function getISOBMFFMediaType(buffer) {
|
|
227
227
|
if (!checkString(buffer, "ftyp", 4)) {
|
|
228
228
|
return null;
|
|
@@ -258,7 +258,7 @@ function checkString(buffer, header, offset = 0) {
|
|
|
258
258
|
return true;
|
|
259
259
|
}
|
|
260
260
|
|
|
261
|
-
//
|
|
261
|
+
// dist/lib/category-api/binary-image-api.js
|
|
262
262
|
var BIG_ENDIAN = false;
|
|
263
263
|
var LITTLE_ENDIAN = true;
|
|
264
264
|
function getBinaryImageMetadata(binaryData) {
|
|
@@ -377,7 +377,7 @@ function toDataView(data) {
|
|
|
377
377
|
throw new Error("toDataView");
|
|
378
378
|
}
|
|
379
379
|
|
|
380
|
-
//
|
|
380
|
+
// dist/lib/parsers/parse-to-node-image.js
|
|
381
381
|
async function parseToNodeImage(arrayBuffer, options) {
|
|
382
382
|
var _a3;
|
|
383
383
|
const { mimeType } = getBinaryImageMetadata(arrayBuffer) || {};
|
|
@@ -386,7 +386,7 @@ async function parseToNodeImage(arrayBuffer, options) {
|
|
|
386
386
|
return await parseImageNode2(arrayBuffer, mimeType);
|
|
387
387
|
}
|
|
388
388
|
|
|
389
|
-
//
|
|
389
|
+
// dist/lib/parsers/parse-image.js
|
|
390
390
|
async function parseImage(arrayBuffer, options, context) {
|
|
391
391
|
options = options || {};
|
|
392
392
|
const imageOptions = options.image || {};
|
|
@@ -423,7 +423,7 @@ function getLoadableImageType(type) {
|
|
|
423
423
|
}
|
|
424
424
|
}
|
|
425
425
|
|
|
426
|
-
//
|
|
426
|
+
// dist/image-loader.js
|
|
427
427
|
var EXTENSIONS = ["png", "jpg", "jpeg", "gif", "webp", "bmp", "ico", "svg", "avif"];
|
|
428
428
|
var MIME_TYPES = [
|
|
429
429
|
"image/png",
|
|
@@ -456,7 +456,7 @@ var ImageLoader = {
|
|
|
456
456
|
options: DEFAULT_IMAGE_LOADER_OPTIONS
|
|
457
457
|
};
|
|
458
458
|
|
|
459
|
-
//
|
|
459
|
+
// dist/lib/encoders/encode-image.js
|
|
460
460
|
var _a2;
|
|
461
461
|
var encodeImageNode = (_a2 = globalThis.loaders) == null ? void 0 : _a2.encodeImageNode;
|
|
462
462
|
async function encodeImage(image, options) {
|
|
@@ -507,7 +507,7 @@ function drawImageToCanvas(image, canvas, x = 0, y = 0) {
|
|
|
507
507
|
return canvas;
|
|
508
508
|
}
|
|
509
509
|
|
|
510
|
-
//
|
|
510
|
+
// dist/image-writer.js
|
|
511
511
|
var ImageWriter = {
|
|
512
512
|
name: "Images",
|
|
513
513
|
id: "image",
|
|
@@ -523,7 +523,7 @@ var ImageWriter = {
|
|
|
523
523
|
encode: encodeImage
|
|
524
524
|
};
|
|
525
525
|
|
|
526
|
-
//
|
|
526
|
+
// dist/lib/category-api/image-format.js
|
|
527
527
|
var import_loader_utils4 = require("@loaders.gl/loader-utils");
|
|
528
528
|
var MIME_TYPES2 = [
|
|
529
529
|
"image/png",
|
|
@@ -603,7 +603,8 @@ async function testBrowserImageFormatSupportAsync(testImageDataURL) {
|
|
|
603
603
|
});
|
|
604
604
|
}
|
|
605
605
|
|
|
606
|
-
//
|
|
606
|
+
// dist/index.js
|
|
607
607
|
function loadImage() {
|
|
608
608
|
throw new Error("loadImage has moved to @loaders.gl/textures");
|
|
609
609
|
}
|
|
610
|
+
//# sourceMappingURL=index.cjs.map
|