首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP getimagesize 函數:圖片信息獲取完整指南

     編輯:PHP 相關知識

函數概覽

getimagesize() 讀取圖片文件頭,返回寬度、高度、類型、屬性字符串、MIME 類型等信息,不載入完整圖片到內存,效率極高。

返回值結構

array(
  0 => 寬度,
  1 => 高度,
  2 => 類型常量 (IMAGETYPE_JPEG 等),
  3 => 'width="xxx" height="yyy"',  // 可直接用於 <img> 標籤
  'bits' => 位深,
  'channels' => 通道數 (3=RGB, 4=RGBA),
  'mime' => 'image/jpeg' 等
)

基本用法

<?php
$size = getimagesize($filename);
$fp = fopen($filename, "rb");
if ($size && $fp) {
  header("Content-type: {$size['mime']}");
  fpassthru($fp);
  exit;
} else {
  // 錯誤處理
}
?>

解包賦值

list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
echo "<img src=\"img/flag.jpg\" $attr alt=\"示例\" />";

遠程 URL 支援

$size = getimagesize("https://www.example.com/gifs/logo.gif");
// URL 中特殊字符需編碼
$size = getimagesize("https://www.example.com/gifs/lo%20go.gif");

需啟用 allow_url_fopen,受 max_execution_time、default_socket_timeout 限制。

IPTC/EXIF 信息讀取

$size = getimagesize("testimg.jpg", $info);
if (isset($info["APP13"])) {
  $iptc = iptcparse($info["APP13"]);
  var_dump($iptc);  // 包含標題、關鍵字、作者、版權等
}

第二個參數以引用方式接收圖片內嵌的 APP 段數據。

類型常量對照表

常量值格式
IMAGETYPE_GIF1GIF
IMAGETYPE_JPEG2JPEG
IMAGETYPE_PNG3PNG
IMAGETYPE_SWF4SWF
IMAGETYPE_PSD5PSD
IMAGETYPE_BMP6BMP
IMAGETYPE_TIFF_II7TIFF (Intel)
IMAGETYPE_TIFF_MM8TIFF (Motorola)
IMAGETYPE_JPC9JPEG 2000
IMAGETYPE_JP210JPEG 2000
IMAGETYPE_JPX11JPEG 2000
IMAGETYPE_JB212JB2
IMAGETYPE_SWC13SWC
IMAGETYPE_IFF14IFF
IMAGETYPE_WBMP15WBMP
IMAGETYPE_XBM16XBM
IMAGETYPE_ICO17ICO
IMAGETYPE_WEBP18WebP (PHP 7.1+)
IMAGETYPE_BMP19BMP (PHP 8.0+ 區分)

常見應用場景

  • 上傳驗證:檢查類型、尺寸、文件頭一致性
  • 縮略圖生成:計算目標尺寸、保持比例
  • 圖片輸出:動態設置 Content-Type
  • 元數據提取:IPTC/EXIF 用於分類、版權管理
  • 遠程圖片預覽:不下載完整文件獲取尺寸

注意事項

  • 不支援 SVG(文本格式),需用 XML 解析
  • 大文件遠程讀取慢,建議緩存結果
  • 損壞文件可能返回 false 或觸發警告,用 @ 抑制並檢查返回值
  • PHP 7.1+ 新增 IMAGETYPE_WEBP 支援
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved