1
- @JS ()
2
1
library pica;
3
2
4
3
import 'dart:convert' ;
5
- import 'dart:html ' ;
4
+ import 'dart:js_interop ' ;
6
5
import 'dart:typed_data' ;
7
6
8
7
import 'package:flutter_image_compress_platform_interface/flutter_image_compress_platform_interface.dart' ;
9
- import 'package:js/js.dart' ;
10
- import 'package:js/js_util.dart' ;
8
+ import 'package:web/web.dart' ;
11
9
12
- import 'window.dart' ;
13
10
import 'log.dart' as logger;
11
+ import 'util.dart' ;
12
+ import 'window.dart' ;
14
13
15
- @JS ('pica.resize' )
16
- external dynamic resize (
17
- ImageBitmap imageBitmap,
18
- CanvasElement canvas,
19
- );
20
-
21
- @JS ()
22
- @staticInterop
23
- class Pica {}
24
-
25
- extension PicaExt on Pica {
26
- external dynamic resize (
27
- ImageBitmap imageBitmap,
28
- CanvasElement canvas,
14
+ extension type Pica ._(JSObject _) implements JSObject {
15
+ external JSPromise resize (
16
+ ImageBitmap from,
17
+ HTMLCanvasElement to,
29
18
);
30
-
31
- external dynamic init ();
32
19
}
33
20
34
21
Future <Uint8List > resizeWithList ({
@@ -39,14 +26,14 @@ Future<Uint8List> resizeWithList({
39
26
int quality = 88 ,
40
27
}) async {
41
28
final Stopwatch stopwatch = Stopwatch ()..start ();
42
- final pica = jsWindow .pica () as Pica ;
29
+ final pica = window .pica ();
43
30
logger.jsLog ('The pica instance' , pica);
44
31
logger.jsLog ('src image buffer' , buffer);
45
32
logger.dartLog ('src image buffer length: ${buffer .length }' );
46
- final bitmap = await convertUint8ListToBitmap ( buffer);
33
+ final bitmap = await buffer. toImageBitmap ( );
47
34
48
- final srcWidth = bitmap.width! ;
49
- final srcHeight = bitmap.height! ;
35
+ final srcWidth = bitmap.width;
36
+ final srcHeight = bitmap.height;
50
37
51
38
final ratio = srcWidth / srcHeight;
52
39
@@ -55,8 +42,10 @@ Future<Uint8List> resizeWithList({
55
42
56
43
logger.jsLog ('target size' , '$width x $height ' );
57
44
58
- final canvas = CanvasElement (width: width, height: height);
59
- await promiseToFuture (pica.resize (bitmap, canvas));
45
+ final canvas = HTMLCanvasElement ();
46
+ canvas.width = width;
47
+ canvas.height = height;
48
+ await pica.resize (bitmap, canvas).toDart;
60
49
final blob = canvas.toDataUrl (format.type, quality / 100 );
61
50
final str = blob.split (',' )[1 ];
62
51
0 commit comments