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 策略。 [2025-08-13 14:31:12 | AI写代码神器 | 608点数解答]
- cannot read properties of null (reading 'userid') typeerror: cannot read properties of null (reading 'userid') at eval (webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedruleset-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleset[0].use[0]!./src/views/businesslistview.vue?vue&type=script&setup=true&lang=js:28:88) at eval (webpack-internal:///./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js:2677:40) at callwitherrorhandling (webpack-internal:/(614点数解答 | 2024-11-28 14:31:57)178
- <!doctype html> <html lang="zh"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="css/mian.css"> <link rel="stylesheet" href="css/index.css"> <script src="js/jquery-3.3.1.min.js"></script> <script src="js/jquery-ui.min.js"></script> <script type="text/javascript"> // (1)创建js函数,使用jquery动画,实现ready事件 $(document). ____(1)____ (function(){ //ready事件 $('li').each(function(index){ //遍历对象 $(this).hover(function(){ //单击触发事件 $('li').animate({ width:100 },500); //删除当前元素的样式 $('li').eq(index).animate({ width:200 },500); }); }); }); </script> <title>首页</title> </head> <body> <header> <div class="logo"> <img src="img/logo.jpg" width="250" height="60"> </div> <form class="searchform"> <input type="text" name="search" id="search"/> <input type="submit" value="搜索" id="button"/> </form> <div class="navigation"> <a href="#">手机</a> | <a(475点数解答 | 2024-12-19 14:58:05)267
- <!doctype html> <html lang="zh"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="css/mian.css"> <link rel="stylesheet" href="css/index.css"> <script src="js/jquery-3.3.1.min.js"></script> <script src="js/jquery-ui.min.js"></script> <script type="text/javascript"> // (1)创建js函数,使用jquery动画,实现ready事件 $(document). ____(1)____ (function(){ //ready事件 $('li').each(function(index){ //遍历对象 $(this).hover(function(){ //单击触发事件 $('li').animate({ width:100 },500); //删除当前元素的样式 $('li').eq(index).animate({ width:200 },500); }); }); }); </script> <title>首页</title> </head> <body> <header> <div class="logo"> <img src="img/logo.jpg" width="250" height="60"> </div> <form class="searchform"> <input type="text" name="search" id="search"/> <input type="submit" value="搜索" id="button"/> </form> <div class="navigation"> <a href="#">手机</a> | <a(495点数解答 | 2024-12-19 14:58:06)211
- <!doctype html> <html lang="zh"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="css/mian.css"> <link rel="stylesheet" href="css/index.css"> <script src="js/jquery-3.3.1.min.js"></script> <script src="js/jquery-ui.min.js"></script> <script type="text/javascript"> // (1)创建js函数,使用jquery动画,实现ready事件 $(document). ____(1)____ (function(){ //ready事件 $('li').each(function(index){ //遍历对象 $(this).hover(function(){ //单击触发事件 $('li').animate({ width:100 },500); //删除当前元素的样式 $('li').eq(index).animate({ width:200 },500); }); }); }); </script> <title>首页</title> </head> <body> <header> <div class="logo"> <img src="img/logo.jpg" width="250" height="60"> </div> <form class="searchform"> <input type="text" name="search" id="search"/> <input type="submit" value="搜索" id="button"/> </form> <div class="navigation"> <a href="#">手机</a> | <a(497点数解答 | 2024-12-19 14:58:18)221
- <!doctype html> <html lang="zh"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="css/mian.css"> <link rel="stylesheet" href="css/index.css"> <script src="js/jquery-3.3.1.min.js"></script> <script src="js/jquery-ui.min.js"></script> <script type="text/javascript"> // (1)创建js函数,使用jquery动画,实现ready事件 $(document). ____(1)____ (function(){ //ready事件 $('li').each(function(index){ //遍历对象 $(this).hover(function(){ //单击触发事件 $('li').animate({ width:100 },500); //删除当前元素的样式 $('li').eq(index).animate({ width:200 },500); }); }); }); </script> <title>首页</title> </head> <body> <header> <div class="logo"> <img src="img/logo.jpg" width="250" height="60"> </div> <form class="searchform"> <input type="text" name="search" id="search"/> <input type="submit" value="搜索" id="button"/> </form> <div class="navigation"> <a href="#">手机</a> | <a(497点数解答 | 2024-12-19 14:58:20)234
- <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Three.js 示例</title> <style> body { margin: 0; } canvas { display: block; } </style> </head> <body> <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r146/three.min.js"></script> <script> // 你的 Three.js 代码 const scene = new THREE.Scene(); const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); const renderer = new THREE.WebGLRenderer(); (164点数解答 | 2025-02-27 23:30:20)156
- <!DOCTYPE html> <html> <head> <title>可360°观察的正交长方体</title> <style> body { margin: 0; overflow: hidden; } canvas { display: block; } </style> </head> <body> <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/controls/OrbitControls.js"></script> <script> // 初始化场景 const scene = new THREE.Scene(); scene.background = new THREE.Color((466点数解答 | 2025-03-01 11:35:41)161
- java 获取 字符串中某个子字符串出现的所有位置(691点数解答 | 2023-12-28 19:49:03)226
- 题目:为巩固和提高初学加减乘除运算的学生数学方面的认知与运算能力,请使用python语言的tkinter库资源,编写一个简单的gui可视化的小程序,实现一个随机出题(30以内整数加减乘除法的算术题)、判题、打分的小程序。具体要求如下: 【程序要求:】 (1)应用tkinter库资源绘制生成图形界面窗口(大小:800*600):界面元素包括:若干标签控件label、若干文本框控件entry、三个命令按钮控件button,以及其它个性化所需的、你认为有用的相关控件元素。 (2)标签控件label、文本框控件entry元素,功用为:学生姓名的输入与显示、学生学号的输入与显示的载体,以及题号、题目数字、运算符、等号、结果等相关内容输入或显示的载体;三个按钮文本提示内容分别为button 1->“随机生成试题”、 button 2-> “提交”、 button 3-> “查看答案”。 (3)引用随机库资源,通过随机函数产生30以内的随机数,进行加减乘除法题目设计,题目的个数要求10个,且简单的单步运算题目。如:5+8= 、7-3= 、 2*4= 、 5÷2= (除法结果为整数除即可)。 (4)程(1266点数解答 | 2024-06-19 14:45:56)222
- cannot read properties of null (reading 'userid') typeerror: cannot read properties of null (reading 'userid') at eval (webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedruleset-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleset[0].use[0]!./src/views/businesslistview.vue?vue&type=script&setup=true&lang=js:28:88)(523点数解答 | 2024-11-28 14:32:05)171
- cannot read properties of null (reading 'userid') typeerror: cannot read properties of null (reading 'userid') at eval (webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedruleset-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleset[0].use[0]!./src/views/businesslistview.vue?vue&type=script&setup=true&lang=js:28:88) 要怎么修改代码(516点数解答 | 2024-11-28 14:32:43)190
- <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>湖南2025届高考物理公式手册</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/docx/7.4.1/docx.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script> <script src="https://cdnjs.cloudflare.(405点数解答 | 2025-05-28 22:10:21)118