cacheImg.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. // 创建一个全局的图片缓存
  2. const imageCache = new Map();
  3. function loadImage(url, key) {
  4. return new Promise((resolve, reject) => {
  5. // 检查缓存中是否存在该key的图片
  6. if (imageCache.has(key)) {
  7. resolve(imageCache.get(key));
  8. return;
  9. }
  10. // 如果缓存中没有,则创建一个新的图片对象
  11. const img = new Image();
  12. img.src = url;
  13. img.crossOrigin = 'anonymous';
  14. img.onload = () => {
  15. // 图片加载完成后,将其存入缓存
  16. imageCache.set(key, img);
  17. resolve(img);
  18. };
  19. img.onerror = (error) => {
  20. reject(error);
  21. };
  22. });
  23. }
  24. // 使用示例
  25. loadImage(require('@/assets/watermark/feiniao.png'), 'feiniao')
  26. .then((img) => {
  27. // 在这里使用加载完成的图片
  28. // console.log('图片加载成功', img);
  29. })
  30. .catch((error) => {
  31. console.error('图片加载失败', error);
  32. });
  33. loadImage(require('@/assets/watermark/fushe.png'), 'fushe')
  34. .then((img) => {
  35. // 在这里使用加载完成的图片
  36. // console.log('图片加载成功', img);
  37. })
  38. .catch((error) => {
  39. console.error('图片加载失败', error);
  40. });
  41. loadImage(require('@/assets/watermark/shidu.png'), 'shidu')
  42. .then((img) => {
  43. // 在这里使用加载完成的图片
  44. // console.log('图片加载成功', img);
  45. })
  46. .catch((error) => {
  47. console.error('图片加载失败', error);
  48. });
  49. loadImage(require('@/assets/watermark/temp.png'), 'temp')
  50. .then((img) => {
  51. // 在这里使用加载完成的图片
  52. // console.log('图片加载成功', img);
  53. })
  54. .catch((error) => {
  55. console.error('图片加载失败', error);
  56. });
  57. loadImage("https://birdseye-img.sysuimars.com/birdseye-look-mini/base_map/90378.jpg", 'base_map')
  58. .then((img) => {
  59. // 在这里使用加载完成的图片
  60. // console.log('图片加载成功', img);
  61. })
  62. .catch((error) => {
  63. console.error('图片加载失败', error);
  64. });
  65. export { imageCache ,loadImage};