# 下载图片
const getFileName = (url: string): string => {
const reg = /(?<!\/)\/([a-zA-Z0-9_-]*?)[?|.]/;
const matches = url.match(reg);
return matches && matches[1];
};
const convertImgUrl = (url: string): Promise<string> => {
return new Promise(resolve => {
const image = new Image();
image.setAttribute('crossOrigin', 'anonymous');
image.onload = () => {
const canvas = document.createElement('canvas');
const context = canvas.getContext('2d');
canvas.width = image.width;
canvas.height = image.height;
context.drawImage(image, 0, 0, image.width, image.height);
const dataUrl = canvas.toDataURL('image/png');
resolve(dataUrl);
};
image.src = url;
});
};
const download = (url: string, fileName?: string) => {
const a = document.createElement('a');
a.href = url;
a.download = fileName || getFileName(url);
a.target = '_blank';
a.click();
};
// use
convertImgUrl('https://images.unsplash.com/photo-1612564148954-59545876eaa0?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=700&q=80').then(dataUrl => {
download(dataUrl, fileName);
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36