UNPKG

1.75 kBJavaScriptView Raw
1import { shouldBeObject } from '../../../utils/index.js';
2import { MethodHandler } from '../../../utils/handler.js';
3
4/**
5 * 获取图片信息。网络图片需先配置download域名才能生效。
6 */
7const getImageInfo = (options) => {
8 // options must be an Object
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
49export { getImageInfo };
50//# sourceMappingURL=getImageInfo.js.map