@browser-mc/browser-image-resizer-ex 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -0
- package/dist/animated-webp.d.ts +5 -3
- package/dist/animated-webp.d.ts.map +1 -1
- package/dist/animated-webp.js.map +1 -1
- package/dist/frame-utils.d.ts +9 -4
- package/dist/frame-utils.d.ts.map +1 -1
- package/dist/frame-utils.js +30 -3
- package/dist/frame-utils.js.map +1 -1
- package/dist/index.d.ts +43 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +175 -8
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -47,6 +47,11 @@ const result = await resizeAndConvertImage({
|
|
|
47
47
|
fit: 'contain',
|
|
48
48
|
exif: 'keep',
|
|
49
49
|
colorMetadata: 'preserve',
|
|
50
|
+
rawBitDepth: 8,
|
|
51
|
+
rawChromaSubsampling: '420',
|
|
52
|
+
avif: {
|
|
53
|
+
chromaSubsampling: '420',
|
|
54
|
+
},
|
|
50
55
|
});
|
|
51
56
|
|
|
52
57
|
if (result.kind === 'animated') {
|
|
@@ -60,6 +65,25 @@ if (result.kind === 'animated') {
|
|
|
60
65
|
|
|
61
66
|
`resizeAndConvertImage` detects animated input with `ImageDecoder`. Animated input is preserved as animated WebP by default because animated WebP is currently the only animated output muxer. Use `animation: 'first-frame'` to force still-image conversion.
|
|
62
67
|
|
|
68
|
+
## Feature checks
|
|
69
|
+
|
|
70
|
+
```ts
|
|
71
|
+
import { checkImageDecodeSupport, getBrowserImageResizerSupportWithAvif } from '@browser-mc/browser-image-resizer-ex';
|
|
72
|
+
|
|
73
|
+
const support = await getBrowserImageResizerSupportWithAvif();
|
|
74
|
+
console.log(support.imageDecoder, support.imageEncoder.avif.variants.yuv444.bit8);
|
|
75
|
+
|
|
76
|
+
const decode = await checkImageDecodeSupport(file, file.type, {
|
|
77
|
+
animation: 'first-frame',
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
if (!decode.supported) {
|
|
81
|
+
console.log(decode.error);
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
`checkImageDecodeSupport` runs the same input track check used by conversion and returns errors instead of throwing. Passing `animation: 'first-frame'` checks still-frame decoding with `preferAnimation: false`.
|
|
86
|
+
|
|
63
87
|
## Animated WebP
|
|
64
88
|
|
|
65
89
|
```ts
|
|
@@ -79,6 +103,9 @@ console.log(result.blob);
|
|
|
79
103
|
|
|
80
104
|
- Resizing automatically uses raw planar resize for HDR-like formats when `VideoFrame.copyTo()` exposes a supported planar format, and otherwise uses Canvas.
|
|
81
105
|
- `colorMetadata: 'preserve'` is the default. Use `colorMetadata: 'canvas-sdr'` to draw through an sRGB Canvas path and mark the output frame as BT.709 SDR.
|
|
106
|
+
- With `colorMetadata: 'preserve'`, `resizeAndConvertImage` reads source container color metadata through `@browser-mc/media-container` and preserves it when the resize and encode path does not require Canvas color conversion. AVIF `colr/nclx` CICP metadata and AVIF/JPEG/WebP ICC profiles are carried through to compatible AVIF outputs. Explicit `avif.colorMetadata`, `avif.color`, and `avif.colorSpace` options still take precedence for AVIF output. JPEG/WebP output is encoded through Canvas, so source ICC profiles are not reattached after Canvas conversion.
|
|
107
|
+
- `rawBitDepth` and `rawChromaSubsampling` are optional raw planar conversion controls. Use `8`, `10`, or `12` for bit depth, and `444`, `422`, or `420` for chroma. `preserve` is the default for both. These options affect supported raw planar `VideoFrame`s before encoding. For AVIF output, `rawChromaSubsampling: '420'` or `'444'` is also used as the encoder chroma default unless `avif.chromaSubsampling` is set explicitly.
|
|
108
|
+
- Chromium may support 8-bit AVIF encoding while rejecting the matching 10-bit AV1 codec for high-bit-depth frames. When AVIF output is requested and `avif.codec` is not set, `resizeAndConvertImage` checks the 10-bit and 8-bit encoder configs for high-bit-depth planar frames. If 10-bit is unavailable but 8-bit is available, supported planar frames are converted to 8-bit before encoding and an 8-bit AV1 codec is passed explicitly. A warning is added when this implicit 8-bit fallback changes the frame bit depth.
|
|
82
109
|
- JPEG/WebP encoding currently goes through `OffscreenCanvas.convertToBlob()`, so strict HDR preservation is not expected there.
|
|
83
110
|
- Animated WebP currently writes full-canvas frames and does not yet optimize changed rectangles.
|
|
84
111
|
- AVIF EXIF writing remuxes to a minimal AVIF structure through `@browser-mc/media-container`. Nonessential original AVIF boxes are not preserved.
|
package/dist/animated-webp.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { muxAnimatedWebp, type AnimatedWebpFrame, type AnimatedWebpMuxOptions } from '@browser-mc/media-container';
|
|
2
|
-
import { type FrameColorInspection, type
|
|
3
|
-
import { type BrowserImageColorMetadataPolicy } from './frame-utils.js';
|
|
2
|
+
import { type FrameColorInspection, type PlanarResizeAlgorithm } from '@browser-mc/webcodecs-color';
|
|
3
|
+
import { type BrowserImageRawBitDepth, type BrowserImageRawChromaSubsampling, type BrowserImageColorMetadataPolicy } from './frame-utils.js';
|
|
4
4
|
export type { AnimatedWebpFrame, AnimatedWebpMuxOptions, };
|
|
5
5
|
export { muxAnimatedWebp };
|
|
6
6
|
export type BrowserAnimatedImageResizerOptions = {
|
|
@@ -9,7 +9,9 @@ export type BrowserAnimatedImageResizerOptions = {
|
|
|
9
9
|
width?: number;
|
|
10
10
|
height?: number;
|
|
11
11
|
fit?: 'contain' | 'cover' | 'fill';
|
|
12
|
-
rawResizeAlgorithm?:
|
|
12
|
+
rawResizeAlgorithm?: PlanarResizeAlgorithm;
|
|
13
|
+
rawBitDepth?: BrowserImageRawBitDepth;
|
|
14
|
+
rawChromaSubsampling?: BrowserImageRawChromaSubsampling;
|
|
13
15
|
colorMetadata?: BrowserImageColorMetadataPolicy;
|
|
14
16
|
quality?: number;
|
|
15
17
|
loopCount?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animated-webp.d.ts","sourceRoot":"","sources":["../src/animated-webp.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,
|
|
1
|
+
{"version":3,"file":"animated-webp.d.ts","sourceRoot":"","sources":["../src/animated-webp.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAML,KAAK,uBAAuB,EAC5B,KAAK,gCAAgC,EACrC,KAAK,+BAA+B,EACrC,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,iBAAiB,EACjB,sBAAsB,GACvB,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,MAAM,MAAM,kCAAkC,GAAG;IAC/C,KAAK,EAAE,IAAI,GAAG,WAAW,GAAG,UAAU,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;IACnC,kBAAkB,CAAC,EAAE,qBAAqB,CAAC;IAC3C,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,oBAAoB,CAAC,EAAE,gCAAgC,CAAC;IACxD,aAAa,CAAC,EAAE,+BAA+B,CAAC;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;IAC5D,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE;QACL,QAAQ,EAAE,OAAO,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,MAAM,EAAE,KAAK,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,oBAAoB,CAAC;QACjC,UAAU,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;KACvC,CAAC,CAAC;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAQF,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,kCAAkC,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAmCvI"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animated-webp.js","sourceRoot":"","sources":["../src/animated-webp.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,GAGhB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,YAAY,GAGb,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"animated-webp.js","sourceRoot":"","sources":["../src/animated-webp.ts"],"names":[],"mappings":"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"}
|
package/dist/frame-utils.d.ts
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type PlanarResizeAlgorithm, type PlanarBitDepth, type PlanarChromaSubsampling } from '@browser-mc/webcodecs-color';
|
|
2
2
|
import { copyArrayBuffer } from '@browser-mc/binary';
|
|
3
3
|
export { copyArrayBuffer };
|
|
4
4
|
export type BrowserImageResizeFit = 'contain' | 'cover' | 'fill';
|
|
5
5
|
export type BrowserImageResizePath = 'none' | 'raw' | 'canvas';
|
|
6
6
|
export type BrowserImageColorMetadataPolicy = 'preserve' | 'canvas-sdr';
|
|
7
|
+
export type BrowserImageRawBitDepth = 'preserve' | PlanarBitDepth;
|
|
8
|
+
export type BrowserImageRawChromaSubsampling = 'preserve' | PlanarChromaSubsampling;
|
|
7
9
|
export type FrameResizeOptions = {
|
|
8
10
|
width?: number;
|
|
9
11
|
height?: number;
|
|
10
12
|
fit?: BrowserImageResizeFit;
|
|
11
|
-
rawResizeAlgorithm?:
|
|
13
|
+
rawResizeAlgorithm?: PlanarResizeAlgorithm;
|
|
14
|
+
rawBitDepth?: BrowserImageRawBitDepth;
|
|
15
|
+
rawChromaSubsampling?: BrowserImageRawChromaSubsampling;
|
|
12
16
|
colorMetadata?: BrowserImageColorMetadataPolicy;
|
|
13
17
|
};
|
|
14
18
|
export type DecodeImageFrameOptions = {
|
|
@@ -17,6 +21,7 @@ export type DecodeImageFrameOptions = {
|
|
|
17
21
|
desiredHeight?: number;
|
|
18
22
|
preferAnimation?: boolean;
|
|
19
23
|
};
|
|
24
|
+
export type InspectImageTrackOptions = Pick<DecodeImageFrameOptions, 'colorSpaceConversion' | 'preferAnimation'>;
|
|
20
25
|
export type ImageInputInspection = {
|
|
21
26
|
animated: boolean;
|
|
22
27
|
frameCount: number;
|
|
@@ -24,7 +29,7 @@ export type ImageInputInspection = {
|
|
|
24
29
|
decoder: 'image-decoder' | 'fallback';
|
|
25
30
|
};
|
|
26
31
|
export declare function createImageDecoder(input: Blob | ArrayBuffer | Uint8Array, type: string, options?: DecodeImageFrameOptions): Promise<ImageDecoder>;
|
|
27
|
-
export declare function inspectImageTrack(input: Blob | ArrayBuffer | Uint8Array, type: string, options?:
|
|
32
|
+
export declare function inspectImageTrack(input: Blob | ArrayBuffer | Uint8Array, type: string, options?: InspectImageTrackOptions): Promise<ImageInputInspection>;
|
|
28
33
|
export declare function decodeFirstImageFrame(input: Blob | ArrayBuffer | Uint8Array, type: string, options?: DecodeImageFrameOptions): Promise<VideoFrame>;
|
|
29
34
|
export declare function resolveTargetSize(sourceWidth: number, sourceHeight: number, options: Pick<FrameResizeOptions, 'width' | 'height' | 'fit'>): {
|
|
30
35
|
width: number;
|
|
@@ -33,7 +38,7 @@ export declare function resolveTargetSize(sourceWidth: number, sourceHeight: num
|
|
|
33
38
|
export declare function resizeFrameForColor(frame: VideoFrame, size: {
|
|
34
39
|
width: number;
|
|
35
40
|
height: number;
|
|
36
|
-
}, options: Pick<FrameResizeOptions, 'rawResizeAlgorithm' | 'colorMetadata'>): Promise<{
|
|
41
|
+
}, options: Pick<FrameResizeOptions, 'rawResizeAlgorithm' | 'rawBitDepth' | 'rawChromaSubsampling' | 'colorMetadata'>): Promise<{
|
|
37
42
|
frame: VideoFrame;
|
|
38
43
|
path: BrowserImageResizePath;
|
|
39
44
|
warnings: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame-utils.d.ts","sourceRoot":"","sources":["../src/frame-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,
|
|
1
|
+
{"version":3,"file":"frame-utils.d.ts","sourceRoot":"","sources":["../src/frame-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/frame-utils.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { classifyFrameColor, convertFrameToCanvasSdr,
|
|
1
|
+
import { classifyFrameColor, convertFrameToCanvasSdr, resizeFramePlanar, resizeFrameWithCanvas, } from '@browser-mc/webcodecs-color';
|
|
2
2
|
import { copyArrayBuffer } from '@browser-mc/binary';
|
|
3
3
|
export { copyArrayBuffer };
|
|
4
4
|
export async function createImageDecoder(input, type, options = {}) {
|
|
@@ -21,7 +21,7 @@ export async function inspectImageTrack(input, type, options = {}) {
|
|
|
21
21
|
}
|
|
22
22
|
const decoder = await createImageDecoder(input, type, {
|
|
23
23
|
colorSpaceConversion: options.colorSpaceConversion,
|
|
24
|
-
preferAnimation: true,
|
|
24
|
+
preferAnimation: options.preferAnimation ?? true,
|
|
25
25
|
});
|
|
26
26
|
try {
|
|
27
27
|
const track = decoder.tracks.selectedTrack;
|
|
@@ -81,10 +81,16 @@ export function resolveTargetSize(sourceWidth, sourceHeight, options) {
|
|
|
81
81
|
}
|
|
82
82
|
export async function resizeFrameForColor(frame, size, options) {
|
|
83
83
|
const colorMetadata = options.colorMetadata ?? 'preserve';
|
|
84
|
+
const rawBitDepth = options.rawBitDepth ?? 'preserve';
|
|
85
|
+
const rawChromaSubsampling = options.rawChromaSubsampling ?? 'preserve';
|
|
86
|
+
const wantsRawPlanarConversion = rawBitDepth !== 'preserve' || rawChromaSubsampling !== 'preserve';
|
|
84
87
|
if (size.width === frame.displayWidth && size.height === frame.displayHeight) {
|
|
85
88
|
if (colorMetadata === 'canvas-sdr') {
|
|
86
89
|
return { frame: convertFrameToCanvasSdr(frame).frame, path: 'canvas', warnings: [] };
|
|
87
90
|
}
|
|
91
|
+
if (wantsRawPlanarConversion) {
|
|
92
|
+
return processRawPlanarFrame(frame, { ...size, ...options }, [], 'none');
|
|
93
|
+
}
|
|
88
94
|
return { frame, path: 'none', warnings: [] };
|
|
89
95
|
}
|
|
90
96
|
const warnings = [];
|
|
@@ -104,8 +110,10 @@ export async function resizeFrameForColor(frame, size, options) {
|
|
|
104
110
|
}
|
|
105
111
|
if (color.recommendedPath === 'raw-hdr') {
|
|
106
112
|
try {
|
|
107
|
-
const resized = await
|
|
113
|
+
const resized = await resizeFramePlanar(frame, {
|
|
108
114
|
...size,
|
|
115
|
+
bitDepth: rawBitDepth === 'preserve' ? undefined : rawBitDepth,
|
|
116
|
+
chromaSubsampling: rawChromaSubsampling === 'preserve' ? undefined : rawChromaSubsampling,
|
|
109
117
|
algorithm: options.rawResizeAlgorithm ?? 'bilinear',
|
|
110
118
|
});
|
|
111
119
|
return { frame: resized.frame, path: 'raw', warnings };
|
|
@@ -118,8 +126,27 @@ export async function resizeFrameForColor(frame, size, options) {
|
|
|
118
126
|
if (color.recommendedPath === 'raw-hdr') {
|
|
119
127
|
warnings.push('Canvas fallback may collapse HDR/BT.2020 content to sRGB or Display P3.');
|
|
120
128
|
}
|
|
129
|
+
if (wantsRawPlanarConversion) {
|
|
130
|
+
warnings.push('raw planar conversion was requested but Canvas resize output is not a supported planar YUV frame.');
|
|
131
|
+
}
|
|
121
132
|
return { frame: resized.frame, path: 'canvas', warnings };
|
|
122
133
|
}
|
|
134
|
+
async function processRawPlanarFrame(frame, options, warnings, fallbackPath) {
|
|
135
|
+
try {
|
|
136
|
+
const converted = await resizeFramePlanar(frame, {
|
|
137
|
+
width: options.width,
|
|
138
|
+
height: options.height,
|
|
139
|
+
bitDepth: options.rawBitDepth === 'preserve' ? undefined : options.rawBitDepth,
|
|
140
|
+
chromaSubsampling: options.rawChromaSubsampling === 'preserve' ? undefined : options.rawChromaSubsampling,
|
|
141
|
+
algorithm: options.rawResizeAlgorithm ?? 'bilinear',
|
|
142
|
+
});
|
|
143
|
+
return { frame: converted.frame, path: 'raw', warnings };
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
warnings.push(`raw planar conversion was not available: ${error instanceof Error ? error.message : String(error)}`);
|
|
147
|
+
return { frame, path: fallbackPath, warnings };
|
|
148
|
+
}
|
|
149
|
+
}
|
|
123
150
|
export async function encodeFrameWithCanvas(frame, mime, quality = 0.85) {
|
|
124
151
|
const canvas = new OffscreenCanvas(frame.displayWidth, frame.displayHeight);
|
|
125
152
|
const context = canvas.getContext('2d', { colorSpace: classifyFrameColor(frame).canvasColorSpace });
|
package/dist/frame-utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame-utils.js","sourceRoot":"","sources":["../src/frame-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,
|
|
1
|
+
{"version":3,"file":"frame-utils.js","sourceRoot":"","sources":["../src/frame-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { type ExifPayload } from '@browser-mc/exif-transplant';
|
|
2
|
-
import { type EncodeAvifOptions } from '@browser-mc/webcodecs-avif';
|
|
3
|
-
import { type BrowserImageColorMetadataPolicy, type BrowserImageResizeFit, type BrowserImageResizePath, type ImageInputInspection } from './frame-utils.js';
|
|
2
|
+
import { readAvifCicpColor, readAvifColorMetadata, readAvifColorSpace, type AvifEncodeSupport, type EncodeAvifOptions } from '@browser-mc/webcodecs-avif';
|
|
3
|
+
import { type BrowserImageColorMetadataPolicy, type BrowserImageRawBitDepth, type BrowserImageRawChromaSubsampling, type BrowserImageResizeFit, type BrowserImageResizePath, type ImageInputInspection } from './frame-utils.js';
|
|
4
4
|
import { muxAnimatedWebp, type BrowserAnimatedImageResizerOptions, type BrowserAnimatedImageResizerResult, type AnimatedWebpFrame, type AnimatedWebpMuxOptions } from './animated-webp.js';
|
|
5
|
-
import { type FrameColorClassification, type FrameColorInspection, type
|
|
5
|
+
import { type FrameColorClassification, type FrameColorInspection, type PlanarResizeAlgorithm } from '@browser-mc/webcodecs-color';
|
|
6
6
|
export type BrowserImageOutputMime = 'image/avif' | 'image/jpeg' | 'image/webp';
|
|
7
7
|
export type BrowserImageExifPolicy = 'keep' | 'drop' | 'drop-gps';
|
|
8
8
|
export type BrowserImageAnimationPolicy = 'preserve' | 'first-frame' | 'error';
|
|
9
|
-
export type { AnimatedWebpFrame, AnimatedWebpMuxOptions, BrowserAnimatedImageResizerOptions, BrowserAnimatedImageResizerResult, BrowserImageColorMetadataPolicy, BrowserImageResizeFit, BrowserImageResizePath, ImageInputInspection, };
|
|
9
|
+
export type { AnimatedWebpFrame, AnimatedWebpMuxOptions, BrowserAnimatedImageResizerOptions, BrowserAnimatedImageResizerResult, BrowserImageColorMetadataPolicy, BrowserImageRawBitDepth, BrowserImageRawChromaSubsampling, BrowserImageResizeFit, BrowserImageResizePath, ImageInputInspection, };
|
|
10
10
|
export type BrowserImageResizerOptions = {
|
|
11
11
|
input: Blob | ArrayBuffer | Uint8Array;
|
|
12
12
|
inputMime?: string;
|
|
@@ -17,7 +17,9 @@ export type BrowserImageResizerOptions = {
|
|
|
17
17
|
exif?: BrowserImageExifPolicy;
|
|
18
18
|
animation?: BrowserImageAnimationPolicy;
|
|
19
19
|
colorSpaceConversion?: ColorSpaceConversion;
|
|
20
|
-
rawResizeAlgorithm?:
|
|
20
|
+
rawResizeAlgorithm?: PlanarResizeAlgorithm;
|
|
21
|
+
rawBitDepth?: BrowserImageRawBitDepth;
|
|
22
|
+
rawChromaSubsampling?: BrowserImageRawChromaSubsampling;
|
|
21
23
|
colorMetadata?: BrowserImageColorMetadataPolicy;
|
|
22
24
|
quality?: number;
|
|
23
25
|
avif?: Omit<EncodeAvifOptions, 'width' | 'height' | 'quality'>;
|
|
@@ -41,10 +43,45 @@ export type BrowserImageResizerResult = {
|
|
|
41
43
|
warnings: string[];
|
|
42
44
|
};
|
|
43
45
|
export type BrowserImageConversionResult = BrowserImageResizerResult | BrowserAnimatedImageResizerResult;
|
|
46
|
+
export type BrowserImageResizerSupport = {
|
|
47
|
+
imageDecoder: boolean;
|
|
48
|
+
imageEncoder: {
|
|
49
|
+
jpeg: boolean;
|
|
50
|
+
webp: boolean;
|
|
51
|
+
};
|
|
52
|
+
webCodecs: {
|
|
53
|
+
videoFrame: boolean;
|
|
54
|
+
videoEncoder: boolean;
|
|
55
|
+
videoDecoder: boolean;
|
|
56
|
+
};
|
|
57
|
+
canvas: {
|
|
58
|
+
offscreenCanvas: boolean;
|
|
59
|
+
convertToBlob: boolean;
|
|
60
|
+
colorSpace2d: boolean;
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
export type BrowserImageResizerSupportResult = BrowserImageResizerSupport & {
|
|
64
|
+
imageEncoder: BrowserImageResizerSupport['imageEncoder'] & {
|
|
65
|
+
avif: AvifEncodeSupport;
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
export type BrowserImageDecodeSupportResult = {
|
|
69
|
+
supported: boolean;
|
|
70
|
+
mime: string;
|
|
71
|
+
animated: boolean | null;
|
|
72
|
+
frameCount: number | null;
|
|
73
|
+
error: {
|
|
74
|
+
name: string;
|
|
75
|
+
message: string;
|
|
76
|
+
} | null;
|
|
77
|
+
};
|
|
78
|
+
export declare function getBrowserImageResizerSupport(): BrowserImageResizerSupport;
|
|
79
|
+
export declare function getBrowserImageResizerSupportWithAvif(): Promise<BrowserImageResizerSupportResult>;
|
|
80
|
+
export declare function checkImageDecodeSupport(input: Blob | ArrayBuffer | Uint8Array, inputMime?: string, options?: Pick<BrowserImageResizerOptions, 'colorSpaceConversion' | 'animation'>): Promise<BrowserImageDecodeSupportResult>;
|
|
44
81
|
export declare function inspectImageInput(input: Blob | ArrayBuffer | Uint8Array, inputMime?: string, options?: Pick<BrowserImageResizerOptions, 'colorSpaceConversion'>): Promise<ImageInputInspection & {
|
|
45
82
|
mime: string;
|
|
46
83
|
}>;
|
|
47
84
|
export declare function resizeAndConvertImage(options: BrowserImageResizerOptions): Promise<BrowserImageConversionResult>;
|
|
48
85
|
export declare function resizeAnimatedImageToWebp(input: Blob | ArrayBuffer | Uint8Array, options?: Omit<BrowserAnimatedImageResizerOptions, 'input'>): Promise<BrowserAnimatedImageResizerResult>;
|
|
49
|
-
export { muxAnimatedWebp };
|
|
86
|
+
export { muxAnimatedWebp, readAvifCicpColor, readAvifColorMetadata, readAvifColorSpace };
|
|
50
87
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,WAAW,EAEjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,68 @@
|
|
|
1
1
|
import { detectImageMime, readExif, stripGpsFromExif, writeExif, } from '@browser-mc/exif-transplant';
|
|
2
|
-
import { encodeImageToAvif } from '@browser-mc/webcodecs-avif';
|
|
2
|
+
import { checkAvifEncodeSupport, encodeImageToAvif, readAvifCicpColor, readAvifColorMetadata, readAvifColorSpace, } from '@browser-mc/webcodecs-avif';
|
|
3
|
+
import { readImageColorMetadata, } from '@browser-mc/media-container';
|
|
3
4
|
import { copyArrayBuffer, decodeFirstImageFrame, encodeFrameWithCanvas, inspectImageTrack, resizeFrameForColor, resolveTargetSize, toUint8Array, } from './frame-utils.js';
|
|
4
5
|
import { resizeAnimatedImageToWebp as resizeAnimatedImageToWebpInternal, muxAnimatedWebp, } from './animated-webp.js';
|
|
5
|
-
import { classifyFrameColor, inspectFrame, } from '@browser-mc/webcodecs-color';
|
|
6
|
+
import { classifyFrameColor, describePlanarFormat, inspectFrame, resizeFramePlanar, } from '@browser-mc/webcodecs-color';
|
|
7
|
+
export function getBrowserImageResizerSupport() {
|
|
8
|
+
const canvas = typeof OffscreenCanvas !== 'undefined' ? new OffscreenCanvas(1, 1) : null;
|
|
9
|
+
const context = canvas?.getContext('2d', { colorSpace: 'srgb' });
|
|
10
|
+
return {
|
|
11
|
+
imageDecoder: typeof ImageDecoder !== 'undefined',
|
|
12
|
+
imageEncoder: {
|
|
13
|
+
jpeg: canCanvasEncode('image/jpeg'),
|
|
14
|
+
webp: canCanvasEncode('image/webp'),
|
|
15
|
+
},
|
|
16
|
+
webCodecs: {
|
|
17
|
+
videoFrame: typeof VideoFrame !== 'undefined',
|
|
18
|
+
videoEncoder: typeof VideoEncoder !== 'undefined',
|
|
19
|
+
videoDecoder: typeof VideoDecoder !== 'undefined',
|
|
20
|
+
},
|
|
21
|
+
canvas: {
|
|
22
|
+
offscreenCanvas: typeof OffscreenCanvas !== 'undefined',
|
|
23
|
+
convertToBlob: typeof OffscreenCanvas !== 'undefined' && typeof OffscreenCanvas.prototype.convertToBlob === 'function',
|
|
24
|
+
colorSpace2d: context !== null,
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export async function getBrowserImageResizerSupportWithAvif() {
|
|
29
|
+
const support = getBrowserImageResizerSupport();
|
|
30
|
+
return {
|
|
31
|
+
...support,
|
|
32
|
+
imageEncoder: {
|
|
33
|
+
...support.imageEncoder,
|
|
34
|
+
avif: await checkAvifEncodeSupport(),
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export async function checkImageDecodeSupport(input, inputMime, options = {}) {
|
|
39
|
+
const inputBytes = await toUint8Array(input);
|
|
40
|
+
const mime = inputMime ?? detectInputMime(inputBytes, input);
|
|
41
|
+
try {
|
|
42
|
+
const inspection = await inspectImageTrack(inputBytes, mime, {
|
|
43
|
+
colorSpaceConversion: options.colorSpaceConversion ?? 'none',
|
|
44
|
+
preferAnimation: (options.animation ?? 'preserve') !== 'first-frame',
|
|
45
|
+
});
|
|
46
|
+
return {
|
|
47
|
+
supported: true,
|
|
48
|
+
mime,
|
|
49
|
+
animated: inspection.animated,
|
|
50
|
+
frameCount: inspection.frameCount,
|
|
51
|
+
error: null,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
return {
|
|
56
|
+
supported: false,
|
|
57
|
+
mime,
|
|
58
|
+
animated: null,
|
|
59
|
+
frameCount: null,
|
|
60
|
+
error: error instanceof Error
|
|
61
|
+
? { name: error.name, message: error.message }
|
|
62
|
+
: { name: 'Error', message: String(error) },
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
}
|
|
6
66
|
export async function inspectImageInput(input, inputMime, options = {}) {
|
|
7
67
|
const inputBytes = await toUint8Array(input);
|
|
8
68
|
const mime = inputMime ?? detectInputMime(inputBytes, input);
|
|
@@ -16,8 +76,10 @@ export async function inspectImageInput(input, inputMime, options = {}) {
|
|
|
16
76
|
export async function resizeAndConvertImage(options) {
|
|
17
77
|
const inputBytes = await toUint8Array(options.input);
|
|
18
78
|
const inputMime = options.inputMime ?? detectInputMime(inputBytes, options.input);
|
|
79
|
+
const inputColorMetadata = readSourceColorMetadata(inputBytes, inputMime);
|
|
19
80
|
const inputInfo = await inspectImageTrack(inputBytes, inputMime, {
|
|
20
81
|
colorSpaceConversion: options.colorSpaceConversion ?? 'none',
|
|
82
|
+
preferAnimation: (options.animation ?? 'preserve') !== 'first-frame',
|
|
21
83
|
});
|
|
22
84
|
const outputMime = options.outputMime ?? defaultOutputMime(inputMime, inputInfo);
|
|
23
85
|
if (inputInfo.animated && (options.animation ?? 'preserve') !== 'first-frame') {
|
|
@@ -33,6 +95,8 @@ export async function resizeAndConvertImage(options) {
|
|
|
33
95
|
height: options.height,
|
|
34
96
|
fit: options.fit,
|
|
35
97
|
rawResizeAlgorithm: options.rawResizeAlgorithm,
|
|
98
|
+
rawBitDepth: options.rawBitDepth,
|
|
99
|
+
rawChromaSubsampling: options.rawChromaSubsampling,
|
|
36
100
|
quality: options.quality,
|
|
37
101
|
colorSpaceConversion: options.colorSpaceConversion,
|
|
38
102
|
colorMetadata: options.colorMetadata,
|
|
@@ -48,11 +112,17 @@ export async function resizeAndConvertImage(options) {
|
|
|
48
112
|
const color = classifyFrameColor(inputInspection);
|
|
49
113
|
const size = resolveTargetSize(frame.displayWidth, frame.displayHeight, options);
|
|
50
114
|
const resized = await resizeFrameForColor(frame, size, options);
|
|
115
|
+
const preservedColorMetadata = options.colorMetadata === 'canvas-sdr' || resized.path === 'canvas'
|
|
116
|
+
? null
|
|
117
|
+
: inputColorMetadata;
|
|
51
118
|
try {
|
|
52
119
|
const encoded = await encodeFrame(resized.frame, outputMime, {
|
|
53
120
|
quality: options.quality,
|
|
54
121
|
avif: options.avif,
|
|
122
|
+
inputColorMetadata: preservedColorMetadata,
|
|
55
123
|
preserveAlpha: inputMime !== 'image/jpeg',
|
|
124
|
+
rawChromaSubsampling: options.rawChromaSubsampling,
|
|
125
|
+
warnings: resized.warnings,
|
|
56
126
|
});
|
|
57
127
|
const withExif = applyExifPolicy(encoded, outputMime, sourceExif, exifPolicy);
|
|
58
128
|
const blob = new Blob([copyArrayBuffer(withExif)], { type: outputMime });
|
|
@@ -87,7 +157,17 @@ export async function resizeAndConvertImage(options) {
|
|
|
87
157
|
export async function resizeAnimatedImageToWebp(input, options = {}) {
|
|
88
158
|
return resizeAnimatedImageToWebpInternal({ ...options, input });
|
|
89
159
|
}
|
|
90
|
-
export { muxAnimatedWebp };
|
|
160
|
+
export { muxAnimatedWebp, readAvifCicpColor, readAvifColorMetadata, readAvifColorSpace };
|
|
161
|
+
function readSourceColorMetadata(data, mime) {
|
|
162
|
+
if (mime !== 'image/avif' && mime !== 'image/jpeg' && mime !== 'image/webp')
|
|
163
|
+
return null;
|
|
164
|
+
try {
|
|
165
|
+
return readImageColorMetadata(data, mime);
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
91
171
|
function readSourceExif(data) {
|
|
92
172
|
try {
|
|
93
173
|
return readExif(data);
|
|
@@ -116,15 +196,97 @@ function defaultOutputMime(inputMime, inputInfo) {
|
|
|
116
196
|
async function encodeFrame(frame, mime, options) {
|
|
117
197
|
if (mime === 'image/avif') {
|
|
118
198
|
const alpha = options.avif?.alpha ?? (options.preserveAlpha ? 'keep' : 'discard');
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
199
|
+
const chromaSubsampling = options.avif?.chromaSubsampling
|
|
200
|
+
?? avifChromaSubsamplingForRaw(options.rawChromaSubsampling);
|
|
201
|
+
const prepared = await prepareFrameForAvifEncode(frame, {
|
|
202
|
+
codec: options.avif?.codec,
|
|
203
|
+
chromaSubsampling,
|
|
204
|
+
warnings: options.warnings,
|
|
205
|
+
});
|
|
206
|
+
try {
|
|
207
|
+
const inputColorMetadata = options.avif?.colorMetadata === undefined
|
|
208
|
+
&& options.avif?.color === undefined
|
|
209
|
+
&& options.avif?.colorSpace === undefined
|
|
210
|
+
? options.inputColorMetadata ?? undefined
|
|
211
|
+
: undefined;
|
|
212
|
+
return await encodeImageToAvif(prepared.frame, {
|
|
213
|
+
...options.avif,
|
|
214
|
+
alpha,
|
|
215
|
+
chromaSubsampling,
|
|
216
|
+
codec: prepared.codec,
|
|
217
|
+
colorMetadata: options.avif?.colorMetadata ?? inputColorMetadata,
|
|
218
|
+
width: frame.displayWidth,
|
|
219
|
+
height: frame.displayHeight,
|
|
220
|
+
quality: options.quality,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
finally {
|
|
224
|
+
if (prepared.frame !== frame)
|
|
225
|
+
prepared.frame.close();
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return encodeFrameWithCanvas(frame, mime, options.quality);
|
|
229
|
+
}
|
|
230
|
+
async function prepareFrameForAvifEncode(frame, options) {
|
|
231
|
+
if (options.codec !== undefined || !isHighBitdepthPlanarFrame(frame))
|
|
232
|
+
return { frame, codec: options.codec };
|
|
233
|
+
const chromaSubsampling = options.chromaSubsampling ?? '444';
|
|
234
|
+
const tenBitCodec = avifCodecForSubsampling(chromaSubsampling, 10);
|
|
235
|
+
const eightBitCodec = avifCodecForSubsampling(chromaSubsampling, 8);
|
|
236
|
+
const [tenBitSupport, eightBitSupport] = await Promise.all([
|
|
237
|
+
isVideoEncoderConfigSupported(tenBitCodec, frame),
|
|
238
|
+
isVideoEncoderConfigSupported(eightBitCodec, frame),
|
|
239
|
+
]);
|
|
240
|
+
if (tenBitSupport || !eightBitSupport)
|
|
241
|
+
return { frame, codec: options.codec };
|
|
242
|
+
try {
|
|
243
|
+
const converted = await resizeFramePlanar(frame, {
|
|
122
244
|
width: frame.displayWidth,
|
|
123
245
|
height: frame.displayHeight,
|
|
124
|
-
|
|
246
|
+
chromaSubsampling,
|
|
247
|
+
bitDepth: 8,
|
|
125
248
|
});
|
|
249
|
+
options.warnings?.push('AVIF 10-bit encode was not supported, so the frame was converted to 8-bit before encoding.');
|
|
250
|
+
return { frame: converted.frame, codec: eightBitCodec };
|
|
251
|
+
}
|
|
252
|
+
catch (error) {
|
|
253
|
+
options.warnings?.push(`AVIF 10-bit encode was not supported, but 8-bit raw conversion was not available: ${error instanceof Error ? error.message : String(error)}`);
|
|
254
|
+
return { frame, codec: options.codec };
|
|
126
255
|
}
|
|
127
|
-
|
|
256
|
+
}
|
|
257
|
+
async function isVideoEncoderConfigSupported(codec, frame) {
|
|
258
|
+
if (typeof VideoEncoder === 'undefined')
|
|
259
|
+
return false;
|
|
260
|
+
try {
|
|
261
|
+
const support = await VideoEncoder.isConfigSupported({
|
|
262
|
+
codec,
|
|
263
|
+
width: frame.displayWidth,
|
|
264
|
+
height: frame.displayHeight,
|
|
265
|
+
bitrate: Math.max(80_000, Math.round(frame.displayWidth * frame.displayHeight * 0.8 * 0.7)),
|
|
266
|
+
framerate: 1,
|
|
267
|
+
alpha: 'discard',
|
|
268
|
+
latencyMode: 'quality',
|
|
269
|
+
});
|
|
270
|
+
return support.supported === true;
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
return false;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
function isHighBitdepthPlanarFrame(frame) {
|
|
277
|
+
if (!frame.format)
|
|
278
|
+
return false;
|
|
279
|
+
const descriptor = describePlanarFormat(frame.format);
|
|
280
|
+
return descriptor !== null && descriptor.bitDepth > 8;
|
|
281
|
+
}
|
|
282
|
+
function avifCodecForSubsampling(chromaSubsampling, bitDepth) {
|
|
283
|
+
const profile = chromaSubsampling === '444' ? 1 : 0;
|
|
284
|
+
return `av01.${profile}.08M.${String(bitDepth).padStart(2, '0')}`;
|
|
285
|
+
}
|
|
286
|
+
function avifChromaSubsamplingForRaw(rawChromaSubsampling) {
|
|
287
|
+
if (rawChromaSubsampling === '420' || rawChromaSubsampling === '444')
|
|
288
|
+
return rawChromaSubsampling;
|
|
289
|
+
return undefined;
|
|
128
290
|
}
|
|
129
291
|
function applyExifPolicy(data, mime, sourceExif, policy) {
|
|
130
292
|
if (policy === 'drop' || !sourceExif)
|
|
@@ -132,4 +294,9 @@ function applyExifPolicy(data, mime, sourceExif, policy) {
|
|
|
132
294
|
const exifBytes = policy === 'drop-gps' ? stripGpsFromExif(sourceExif.bytes) : sourceExif.bytes;
|
|
133
295
|
return writeExif(data, exifBytes, mime);
|
|
134
296
|
}
|
|
297
|
+
function canCanvasEncode(type) {
|
|
298
|
+
return typeof OffscreenCanvas !== 'undefined'
|
|
299
|
+
&& typeof OffscreenCanvas.prototype.convertToBlob === 'function'
|
|
300
|
+
&& type.startsWith('image/');
|
|
301
|
+
}
|
|
135
302
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@browser-mc/browser-image-resizer-ex",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -16,11 +16,11 @@
|
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
+
"@browser-mc/media-container": "^0.3.0",
|
|
19
20
|
"@browser-mc/binary": "^0.0.1",
|
|
20
|
-
"@browser-mc/
|
|
21
|
-
"@browser-mc/
|
|
22
|
-
"@browser-mc/webcodecs-
|
|
23
|
-
"@browser-mc/exif-transplant": "^0.0.2"
|
|
21
|
+
"@browser-mc/webcodecs-color": "^0.1.0",
|
|
22
|
+
"@browser-mc/exif-transplant": "^0.0.3",
|
|
23
|
+
"@browser-mc/webcodecs-avif": "^0.4.0"
|
|
24
24
|
},
|
|
25
25
|
"files": [
|
|
26
26
|
"dist",
|