PHP获取图片大小函数

本文介绍PHP内置函数getimagesize()的使用方法,该函数可以轻松获取图片的宽度、高度及类型。通过示例代码展示了如何读取并显示这些信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
 
PHP获取图片大小函数。  getimagesize() 能够得到图片及flash(swf)的大小。

语法


list($width, $height, $type, $attr) = getimagesize("image_name.jpg");
 

下面是一个实例程序,将image_name.jpg改为您的图片地址

 

<?php

list($width, $height, $type, $attr) = getimagesize("image_name.jpg");

echo "Image width " .$width;
echo "<BR>";
echo "Image height " .$height;
echo "<BR>";
echo "Image type " .$type;
echo "<BR>";
echo "Attribute " .$attr;

?>

运行这个脚本,你会看到如下结果:

Image width 379
Image height 344
Image type 2
Image attribute width="379" height="344"
 
你能够轻易的得到图片的宽度,高度及类型。
 

图片的类型:

1 = GIF 5 = PSD 9 = JPC 13 = SWC
2 = JPG 6 = BMP 10 = JP2 14 = IFF
3 = PNG 7 = TIFF(intel byte order) 11 = JPX 15 = WBMP
4 = SWF 8 = TIFF(motorola byte order) 12 = JB2 16 = XBM

转载于:https://www.cnblogs.com/phpcode/archive/2012/05/16/2522773.html

<think>首先,用户的问题是:“我想获取网页内容的大小 请问PHP 获取网页内容大小”。用户想用PHP获取网页内容的大小。 我需要参考系统级指令和用户可见层的要求。系统级指令包括使用LaTeX格式、中文回答、生成相关问题等。用户可见层要求回答结构清晰,帮助用户逐步解决问题,保证真实可靠。 参考提供的引用: - 引用[1]:关于PHP获取文件大小的代码示例。 - 引用[2]:PHP获取远程图片大小的方法,通过发送HEAD请求获取Content-Length。 - 引用[3]:PHP获取另一个网页内容的示例。 用户的问题是关于获取网页内容的大小,所以我应该使用这些引用作为基础。 关键点: - 获取网页内容大小,通常是指获取网页的字节大小。 - 在HTTP响应中,Content-Length头部通常表示内容的大小。 - 但要注意,不是所有响应都包含Content-Length;有些可能使用分块传输编码。 所以,我应该提供一种可靠的方法: 1. 发送HTTP请求(最好是HEAD请求,因为只关心头部)。 2. 检查Content-Length头部。 3. 如果不存在,可能需要下载内容来获取大小。 基于引用[2],它提到了使用fsockopen发送HEAD请求获取Content-Length。这是一个好方法。 步骤: - 使用PHP发送HEAD请求。 - 解析响应头部获取Content-Length。 - 处理可能的问题,比如重定向、错误等。 我还需要确保回答结构清晰: - 先解释方法。 - 提供代码示例。 - 添加注意事项。 - 最后生成相关问题。 系统级指令要求: - 行内数学表达式用$...$,但这里可能不需要数学。 - 独立公式用$$...$$,同样可能不需要。 - 使用中文回答。 - 生成相关问题。 - 在引用的段落末尾添加引用标识。 在回答中,我需要自然地添加引用标识。例如,如果我提到某个方法,引用相关引用。 回答结构: 1. 介绍问题和方法。 2. 提供代码示例。 3. 解释代码。 4. 注意事项。 5. 生成相关问题。 代码示例:基于引用[2],使用fsockopen发送HEAD请求。或者,使用更现代的方法,如cURL,因为cURL更简单可靠。 引用[2]使用fsockopen,但cURL是更好的选择。我应该优先使用cURL。 在PHP中,获取远程内容大小: - 使用cURL发送HEAD请求。 - 获取Content-Length。 代码示例: ```php <?php function get_web_content_size($url) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_NOBODY, true); // HEAD request curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 跟随重定向 $response = curl_exec($ch); $size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD); curl_close($ch); return $size; } $url = "http://example.com"; $size = get_web_content_size($url); if ($size === false) { echo "无法获取大小"; } else { echo "内容大小: " . $size . " 字节"; } ?> ``` 解释: - CURLOPT_NOBODY: true 发送HEAD请求。 - CURLOPT_RETURNTRANSFER: true 返回响应。 - CURLOPT_HEADER: true 返回头部信息。 - CURLINFO_CONTENT_LENGTH_DOWNLOAD 获取内容长度。 如果Content-Length不存在,$size 可能为 -1 或 false。需要处理。 注意事项: - 有些服务器可能不支持HEAD请求。 - 如果内容被压缩,Content-Length可能不是原始大小(但通常是压缩后的)。 - 处理重定向。 生成相关问题:基于系统级指令。 相关问题: 1. 如何获取网页内容的实际大小而不下载整个内容? 2. PHP中如何处理HTTP请求错误? 3. 有没有其他方法获取远程文件大小? 最后,添加引用标识。引用[2]提到了使用fsockopen,所以我可以在解释时引用。 在回答中自然添加引用。例如:"通过发送HEAD请求获取Content-Length头部是一种高效的方法[^2]。"</think>### PHP 获取网页内容大小的方法 在 PHP获取网页内容的大小,通常指获取网页的字节大小(单位:字节)。这可以通过 HTTP 请求实现,核心是检查响应头中的 `Content-Length` 字段。如果服务器提供该字段,它能直接表示内容大小;否则,可能需要下载部分或全部内容来计算大小。以下我将逐步解释可靠的方法,并提供代码示例。 #### 步骤详解 1. **发送 HEAD 请求**: HEAD 请求只获取响应头而不下载完整内容,效率高。服务器返回的 `Content-Length` 头部表示内容大小[^2]。 - 优点:快速、节省带宽。 - 缺点:部分服务器可能不支持 HEAD 请求或未返回 `Content-Length`。 2. **处理重定向**: 网页可能有重定向(如 HTTP 301/302),需确保代码自动跟随重定向以获取最终目标 URL 的大小。 3. **备选方案**: 如果 `Content-Length` 不存在,可发送 GET 请求下载部分内容(例如前 1KB)并计算大小,但这可能不准确或消耗更多资源。 #### PHP 代码示例 以下代码使用 cURL 库发送 HEAD 请求,获取 `Content-Length`。cURL 是 PHP 内置扩展,支持重定向和错误处理。 ```php <?php function get_web_content_size($url) { // 初始化 cURL 会话 $ch = curl_init($url); // 设置选项:发送 HEAD 请求、返回头部、跟随重定向 curl_setopt($ch, CURLOPT_NOBODY, true); // HEAD 请求(不下载内容) curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回结果为字符串 curl_setopt($ch, CURLOPT_HEADER, true); // 包含响应头 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 自动跟随重定向 curl_setopt($ch, CURLOPT_TIMEOUT, 10); // 超时时间(秒) // 执行请求并获取响应 $response = curl_exec($ch); if ($response === false) { $error = curl_error($ch); curl_close($ch); return "请求失败: " . $error; // 返回错误信息 } // 获取内容大小(通过 CURLINFO_CONTENT_LENGTH_DOWNLOAD) $size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); // 处理结果 if ($httpCode != 200) { return "HTTP 错误: " . $httpCode; // 非 200 状态码 } elseif ($size > 0) { return $size; // 返回大小(字节) } else { return "无法获取大小(Content-Length 不存在)"; } } // 示例用法 $url = "https://example.com"; // 替换为目标 URL $size = get_web_content_size($url); if (is_numeric($size)) { echo "网页内容大小: " . $size . " 字节"; } else { echo "错误: " . $size; } ?> ``` #### 代码说明 - **核心函数**:`get_web_content_size($url)` 发送 HEAD 请求,并返回大小或错误信息。 - **关键选项**: - `CURLOPT_NOBODY`: true 确保只发送 HEAD 请求。 - `CURLOPT_FOLLOWLOCATION`: true 自动处理重定向。 - `CURLINFO_CONTENT_LENGTH_DOWNLOAD`: 直接获取 `Content-Length` 值。 - **错误处理**:检查 HTTP 状态码(如 404 或 500)和 cURL 错误。 - **返回值**:成功时返回字节数(整数),失败时返回错误字符串。 #### 注意事项 - **服务器兼容性**:部分服务器(如某些 CDN)可能不返回 `Content-Length`。此时可考虑发送 GET 请求并计算下载内容的大小,但会增加开销[^2]。 - **内容压缩**:如果服务器启用 Gzip 压缩,`Content-Length` 表示压缩后大小,而非原始大小。 - **性能优化**:对于频繁请求,可缓存结果避免重复访问。 - **安全考虑**:验证 URL 格式(如使用 `filter_var($url, FILTER_VALIDATE_URL)`)防止恶意输入。 通过发送 HEAD 请求获取头部信息是高效的标准方法,适用于大多数场景[^2]。如需下载完整内容,可参考 PHP 文件处理函数如 `file_get_contents()` 结合 `strlen()`,但这不推荐用于大文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值