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

PHP getimagesize() 完全指南:獲取圖片尺寸、類型與 HTML 屬性

     編輯:PHP 相關知識

一行代碼搞定圖片元信息:getimagesize() 實戰詳解

getimagesize() 是 PHP 專門用於讀取圖片尺寸、類型等元信息的內置函數,支持 JPEG、PNG、GIF、BMP、WebP 等主流格式,無需載入完整圖片數據,效率極高。

基本用法與返回值結構

<?php
$arr = getimagesize("1.jpg");
/*
返回數組結構:
$arr[0]  寬度 (像素)
$arr[1]  高度 (像素)
$arr[2]  圖片類型常量 (IMAGETYPE_JPEG=2, IMAGETYPE_PNG=3, IMAGETYPE_GIF=1 等)
$arr[3]  完整 width/height 屬性字符串:'width="800" height="600"'
$arr['mime']  MIME 類型:'image/jpeg'
$arr['channels']  通道數:3(RGB) 或 4(RGBA)
$arr['bits']  色深位數
*/
?>

直接輸出圖片標籤(兩種等效寫法)

<?php
$arr = getimagesize("1.jpg");
// 方式 1:使用 $arr[3] 直接輸出屬性字符串
echo '<img src="1.jpg" ' . $arr[3] . ' alt="" />';

// 方式 2:顯式拼接寬高
echo '<img src="1.jpg" width="' . $arr[0] . '" height="' . $arr[1] . '" alt="" />';
?>

輸出結果均為:<img src="1.jpg" width="800" height="600" alt="" />

進階應用場景

1. 圖片類型判斷與驗證

<?php
function isValidImage($path, $allowedTypes = [IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_GIF]) {
    $info = @getimagesize($path);
    return $info !== false && in_array($info[2], $allowedTypes);
}

// 使用
if (isValidImage($_FILES['avatar']['tmp_name'])) {
    // 安全移動文件
}
?>

2. 批量獲取圖片尺寸生成縮略圖配置

<?php
$images = glob('uploads/*.{jpg,png,gif}', GLOB_BRACE);
$thumbConfig = [];
foreach ($images as $img) {
    $info = getimagesize($img);
    if ($info) {
        $thumbConfig[] = [
            'src' => $img,
            'width' => $info[0],
            'height' => $info[1],
            'ratio' => $info[0] / $info[1],
            'mime' => $info['mime']
        ];
    }
}
?>

3. 遠程圖片尺寸獲取(需 allow_url_fopen=On)

<?php
$remote = "https://example.com/banner.jpg";
$info = @getimagesize($remote);
if ($info) {
    echo "遠程圖片: {$info[0]}x{$info[1]} {$info['mime']}";
} else {
    echo "無法讀取遠程圖片";
}
?>

常見陷阱與避坑指南

問題原因解決方案
返回 false文件不存在、非圖片、權限不足、URL 禁止用 @ 抑制警告 + 嚴格判斷 !== false
遠程圖片失敗php.ini 關閉 allow_url_fopen改用 cURL 下載後本地檢測
大圖讀取慢需下載完整文件才能解析頭部僅讀取頭部字節(需自定義流上下文)
類型常量不可讀直接輸出 $arr[2] 得到數字用 image_type_to_extension() 或 image_type_to_mime_type() 轉換

類型常量快速參考

IMAGETYPE_GIF        = 1
IMAGETYPE_JPEG       = 2
IMAGETYPE_PNG        = 3
IMAGETYPE_SWF        = 4
IMAGETYPE_PSD        = 5
IMAGETYPE_BMP        = 6
IMAGETYPE_TIFF_II    = 7
IMAGETYPE_TIFF_MM    = 8
IMAGETYPE_JPC        = 9
IMAGETYPE_JP2        = 10
IMAGETYPE_JPX        = 11
IMAGETYPE_JB2        = 12
IMAGETYPE_SWC        = 13
IMAGETYPE_IFF        = 14
IMAGETYPE_WBMP       = 15
IMAGETYPE_XBM        = 16
IMAGETYPE_ICO        = 17
IMAGETYPE_WEBP       = 18  // PHP 7.1.0+

結語:getimagesize() 是圖片處理流程的「體檢儀」,輕量、無依賴、功能全。善用它的完整返回數組,能讓圖片上傳驗證、縮略圖生成、響應式圖片輸出等環節更加可控高效。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved