JS 实现获取网络图片大小:代码示例与注意事项
要在 JavaScript 中获取网络图片的大小,可以通过创建一个 `Image` 对象来加载图片,同时使用 `fetch` 方法获取图片的响应头信息,从响应头中提取图片的大小。以下是示例代码: ```javascript function getImageSize(url) { // 创建一个 Promise 对象,用于异步操作 return new Promise((resolve, reject) => { // 使用 fetch 方法获取图片的响应 fetch(url) .then(response => { // 检查响应是否成功 if (!response.ok) { throw new Error('Network response was not ok'); } // 从响应头中获取图片的大小,单位为字节 const size = response.headers.get('content-length'); // 解析为数字 const imageSize = parseInt(size, 10); // 创建一个 Image 对象 const img = new Image(); // 监听图片加载成功事件 img.onload = () => { // 解析完成后将图片的宽度、高度和大小作为结果返回 resolve({ width: img.width, height: img.height, size: imageSize }); }; // 监听图片加载失败事件 img.onerror = () => { // 加载失败时抛出错误 reject(new Error('Failed to load image')); }; // 设置图片的源为传入的 URL img.src = url; }) .catch(error => { // 捕获并抛出错误 reject(error); }); }); } // 示例使用 const imageUrl = 'https://example.com/image.jpg'; getImageSize(imageUrl) .then(sizeInfo => { console.log('图片宽度:', sizeInfo.width); console.log('图片高度:', sizeInfo.height); console.log('图片大小:', sizeInfo.size, '字节'); }) .catch(error => { console.error('获取图片大小失败:', error); }); ``` 代码注释已经添加到每一步操作中,解释了代码的功能和目的。这个函数返回一个 Promise 对象,在图片加载成功后解析出图片的宽度、高度和大小。 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 网络请求可能失败,要确保在 `fetch` 请求和图片加载时都进行错误处理。 2. 不同的服务器可能不会在响应头中提供 `content-length` 字段,这时候获取的图片大小可能为 `null`。 3. 跨域问题可能会导致 `fetch` 请求失败或图片加载失败,需要确保服务器配置了正确的 CORS 策略。 ######[AI写代码神器 | 608点数解答 | 2025-08-13 14:31:12]
- Three.js 示例代码解析:优化场景渲染与注意要点(字节豆包 | 164点数解答 | 2025-02-27 23:30:20)277
- Java实现链表反转:迭代与递归双解法详解及开发实战指南(DeepSeek | 1409点数解答 | 2026-03-15 15:09:29)44
- "Debugging 'Cannot Read Properties of Null (reading \'userid\')' Error in Vue Components: Steps and Example"(讯飞星火 | 614点数解答 | 2024-11-28 14:31:57)282
- HTML+jQuery 实现列表元素悬停动画效果:代码详解与注意事项(字节豆包 | 475点数解答 | 2024-12-19 14:58:05)382
- HTML+jQuery:打造动态导航栏动画效果及注意事项(字节豆包 | 495点数解答 | 2024-12-19 14:58:06)329
- HTML+jQuery:打造带动态交互效果的商品展示页面(讯飞星火 | 497点数解答 | 2024-12-19 14:58:18)333
- HTML与jQuery结合:实现商品列表交互动画的首页代码解析(讯飞星火 | 497点数解答 | 2024-12-19 14:58:20)353
- Three.js实现可360°观察正交长方体:代码分析、优化与注意要点(DeepSeek | 466点数解答 | 2025-03-01 11:35:41)260
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)362
- Java技巧:用 indexOf 方法获取字符串中某子字符串所有出现位置( | 691点数解答 | 2023-12-28 19:49:03)326
- Python 实现 DES 加密算法编程实验:从原理到单步调试全解析(字节豆包 | 4096点数解答 | 2025-11-09 22:06:30)85
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)486