1 | import { shouldBeObject } from '../../../utils/index.js';
|
2 | import { MethodHandler } from '../../../utils/handler.js';
|
3 |
|
4 |
|
5 |
|
6 |
|
7 | const getImageInfo = (options) => {
|
8 |
|
9 | const isObject = shouldBeObject(options);
|
10 | if (!isObject.flag) {
|
11 | const res = { errMsg: `getImageInfo:fail ${isObject.msg}` };
|
12 | console.error(res.errMsg);
|
13 | return Promise.reject(res);
|
14 | }
|
15 | const getBase64Image = (image) => {
|
16 | try {
|
17 | const canvas = document.createElement('canvas');
|
18 | canvas.width = image.width;
|
19 | canvas.height = image.height;
|
20 | const ctx = canvas.getContext('2d');
|
21 | ctx === null || ctx === void 0 ? void 0 : ctx.drawImage(image, 0, 0, image.width, image.height);
|
22 | return canvas.toDataURL('image/png');
|
23 | }
|
24 | catch (e) {
|
25 | console.error('getImageInfo:get base64 fail', e);
|
26 | }
|
27 | };
|
28 | const { src, success, fail, complete } = options;
|
29 | const handle = new MethodHandler({ name: 'getImageInfo', success, fail, complete });
|
30 | return new Promise((resolve, reject) => {
|
31 | const image = new Image();
|
32 | image.crossOrigin = '';
|
33 | image.onload = () => {
|
34 | handle.success({
|
35 | width: image.naturalWidth,
|
36 | height: image.naturalHeight,
|
37 | path: getBase64Image(image) || src
|
38 | }, { resolve, reject });
|
39 | };
|
40 | image.onerror = (e) => {
|
41 | handle.fail({
|
42 | errMsg: e.message
|
43 | }, { resolve, reject });
|
44 | };
|
45 | image.src = src;
|
46 | });
|
47 | };
|
48 |
|
49 | export { getImageInfo };
|
50 |
|