一、簡介
1.1 概述
在PHP中,getimagesize()是一個用於獲取圖像信息的函數,它能返回一張圖像的基本信息,例如圖像的類型、寬度、高度以及是否為一張CMYK類型的圖片等等。該函數能夠讀取本地文件,遠程文件,以及任意支持流輸入輸出的文件。具有廣泛的應用場景,常常應用於圖片上傳、處理和展示等領域。
1.2 語法
getimagesize ( string $filename , array &$imageinfo ) : array|false
1.3 參數說明
參數1:$filename,要獲取信息的圖像文件名或圖像流。
參數2:$imageinfo,一個可選的包含圖像相關信息的數組,用於接收返回值。
1.4 返回值
如果獲取成功,getimagesize()函數將會返回一個包含圖片信息的數組,否則將會返回false。
二、獲取圖像基本信息
2.1 獲取圖像類型
在獲取圖像基本信息的時候,最常見的就是想要了解圖像的類型。getimagesize()函數返回的數組中,下標2存儲的就是圖像的類型。
//這裡用的是一張JPEG格式的圖片 $file = "test.jpg"; $size = getimagesize($file); $type = $size[2]; //獲取圖像類型 if($type == IMAGETYPE_JPEG){ echo "這是一張JPEG格式的圖片"; }else{ echo "這不是一張JPEG格式的圖片"; }
2.2 獲取圖像寬高
除了圖像類型以外,圖像的寬度和高度也是獲取圖像基本信息時非常常見的需求。getimagesize()函數返回的數組中,下標0和1分別存儲的是圖像的寬度和高度。
$file = "test.jpg"; $size = getimagesize($file); $width = $size[0]; //獲取圖像寬度 $height = $size[1]; //獲取圖像高度 echo "這張圖片的寬度為{$width}px,高度為{$height}px";
三、獲取更多圖像信息
3.1 獲取DPI
針對一些印刷品或列印輸出需求,需要知道圖像的像素密度信息(即DPI),這也可以通過getimagesize()函數獲得。這需要將$size數組的第三個值和第四個值作為分母計算得到。
$file = "test.jpg"; $size = getimagesize($file); list($dpi_x, $dpi_y) = array($size[3]/$size[0] * 2.54, $size[4]/$size[1] * 2.54); echo "這張圖片的橫向DPI為{$dpi_x},縱向DPI為{$dpi_y}";
3.2 獲取顏色模式
圖像的顏色模式一般分為RGB模式和CMYK模式兩種,可以通過getimagesize()函數返回的數組中的第二個值來判斷。
$file = "test.jpg"; $size = getimagesize($file); $color_mode = $size['channels'] == 3 ? "RGB模式":"CMYK模式"; echo "這張圖片顏色為{$color_mode}";
3.3 獲取圖像大小
除了獲取圖像的寬高,有時候我們還需要獲取圖像在硬碟中的實際大小,這個也可以通過getimagesize()函數返回的數組中的filesize屬性獲取。
$file = "test.jpg"; $size = getimagesize($file); $filesize = $size['filesize']/1024; echo "這張圖片大小為{$filesize}KB";
3.4 獲取圖像方向
對於一些拍攝角度比較特殊的圖片,我們可能需要知道它的方向信息,這也可以通過getimagesize()函數進行獲取。
$file = "test.jpg"; $size = getimagesize($file); if($size['height'] > $size['width']){ echo "這張圖片是豎直方向"; }else{ echo "這張圖片是水平方向"; }
四、異常處理
4.1 處理文件不存在異常
當我們需要獲取一張不存在或者非法的圖片文件信息時,getimagesize()函數會報錯。為了避免程序因為錯誤而中斷,我們可以在調用該函數之前先檢測文件是否存在。
$file = "not_exist.jpg"; if(file_exists($file)){ $size = getimagesize($file); //其他操作 }else{ echo "文件不存在"; }
4.2 處理非圖片文件異常
當我們用getimagesize()函數獲取非圖片類型的文件信息時,也會報錯。為了避免程序因為錯誤而中斷,我們可以使用try-catch機制進行異常處理。
try{ $size = getimagesize("test.txt"); }catch(Exception $e){ echo "文件不是圖片類型"; }
總結
通過本篇文章的介紹,我們可以看到getimagesize()函數在獲取圖像信息方面非常實用,能夠滿足我們日常開發中絕大部分對於圖像信息的需求。同時,在使用該函數時,我們也需要注意異常處理,以保證程序的穩定性。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/271738.html