10
10
11
11
import { isNullishDimension } from './core.js' ;
12
12
import { getFile } from './hub.js' ;
13
- import { env } from '../env.js' ;
13
+ import { env , apis } from '../env.js' ;
14
14
import { Tensor } from './tensor.js' ;
15
15
16
16
// Will be empty (or not used) if running in browser or web-worker
17
17
import sharp from 'sharp' ;
18
18
19
- const BROWSER_ENV = typeof self !== 'undefined' ;
20
- const WEBWORKER_ENV = BROWSER_ENV && self . constructor . name === 'DedicatedWorkerGlobalScope' ;
21
-
22
19
let createCanvasFunction ;
23
20
let ImageDataClass ;
24
21
let loadImageFunction ;
25
- if ( BROWSER_ENV ) {
22
+ const IS_BROWSER_OR_WEBWORKER = apis . IS_BROWSER_ENV || apis . IS_WEBWORKER_ENV ;
23
+ if ( IS_BROWSER_OR_WEBWORKER ) {
26
24
// Running in browser or web-worker
27
25
createCanvasFunction = ( /** @type {number } */ width , /** @type {number } */ height ) => {
28
26
if ( ! self . OffscreenCanvas ) {
@@ -132,7 +130,7 @@ export class RawImage {
132
130
* @returns {RawImage } The image object.
133
131
*/
134
132
static fromCanvas ( canvas ) {
135
- if ( ! BROWSER_ENV ) {
133
+ if ( ! IS_BROWSER_OR_WEBWORKER ) {
136
134
throw new Error ( 'fromCanvas() is only supported in browser environments.' )
137
135
}
138
136
@@ -161,7 +159,7 @@ export class RawImage {
161
159
* @returns {Promise<RawImage> } The image object.
162
160
*/
163
161
static async fromBlob ( blob ) {
164
- if ( BROWSER_ENV ) {
162
+ if ( IS_BROWSER_OR_WEBWORKER ) {
165
163
// Running in environment with canvas
166
164
const img = await loadImageFunction ( blob ) ;
167
165
@@ -339,7 +337,7 @@ export class RawImage {
339
337
height = ( width / this . width ) * this . height ;
340
338
}
341
339
342
- if ( BROWSER_ENV ) {
340
+ if ( IS_BROWSER_OR_WEBWORKER ) {
343
341
// TODO use `resample` in browser environment
344
342
345
343
// Store number of channels before resizing
@@ -412,7 +410,7 @@ export class RawImage {
412
410
return this ;
413
411
}
414
412
415
- if ( BROWSER_ENV ) {
413
+ if ( IS_BROWSER_OR_WEBWORKER ) {
416
414
// Store number of channels before padding
417
415
const numChannels = this . channels ;
418
416
@@ -461,7 +459,7 @@ export class RawImage {
461
459
const crop_width = x_max - x_min + 1 ;
462
460
const crop_height = y_max - y_min + 1 ;
463
461
464
- if ( BROWSER_ENV ) {
462
+ if ( IS_BROWSER_OR_WEBWORKER ) {
465
463
// Store number of channels before resizing
466
464
const numChannels = this . channels ;
467
465
@@ -509,7 +507,7 @@ export class RawImage {
509
507
const height_offset = ( this . height - crop_height ) / 2 ;
510
508
511
509
512
- if ( BROWSER_ENV ) {
510
+ if ( IS_BROWSER_OR_WEBWORKER ) {
513
511
// Store number of channels before resizing
514
512
const numChannels = this . channels ;
515
513
@@ -614,7 +612,7 @@ export class RawImage {
614
612
}
615
613
616
614
async toBlob ( type = 'image/png' , quality = 1 ) {
617
- if ( ! BROWSER_ENV ) {
615
+ if ( ! IS_BROWSER_OR_WEBWORKER ) {
618
616
throw new Error ( 'toBlob() is only supported in browser environments.' )
619
617
}
620
618
@@ -640,7 +638,7 @@ export class RawImage {
640
638
}
641
639
642
640
toCanvas ( ) {
643
- if ( ! BROWSER_ENV ) {
641
+ if ( ! IS_BROWSER_OR_WEBWORKER ) {
644
642
throw new Error ( 'toCanvas() is only supported in browser environments.' )
645
643
}
646
644
@@ -744,8 +742,8 @@ export class RawImage {
744
742
*/
745
743
async save ( path ) {
746
744
747
- if ( BROWSER_ENV ) {
748
- if ( WEBWORKER_ENV ) {
745
+ if ( IS_BROWSER_OR_WEBWORKER ) {
746
+ if ( apis . IS_WEBWORKER_ENV ) {
749
747
throw new Error ( 'Unable to save an image from a Web Worker.' )
750
748
}
751
749
@@ -781,7 +779,7 @@ export class RawImage {
781
779
}
782
780
783
781
toSharp ( ) {
784
- if ( BROWSER_ENV ) {
782
+ if ( IS_BROWSER_OR_WEBWORKER ) {
785
783
throw new Error ( 'toSharp() is only supported in server-side environments.' )
786
784
}
787
785
0 commit comments