getimagesize — 取得映像大小
說明
array getimagesize ( string $filename [, array &$imageinfo ] )
getimagesize() 函數將測定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 影像檔的大小並返回映像的尺寸以及檔案類型和一個可以用於普通 HTML 檔案中 <IMG> 標記中的 height/width 文本字串。
如果不能訪問 filename 指定的映像或者其不是有效映像,getimagesize() 將返回 FALSE 併產生一條 E_WARNING 級的錯誤。
Note: 對 JPC,JP2,JPX,JB2,XBM 和 WBMP 的支援自 PHP 4.3.2 起可用。對 SWC 的支援自 PHP 4.3.0 起可用。對 TIFF 的支援是 PHP 4.2.0 添加的。
Note: JPEG 2000 支援是 PHP 4.3.2 添加的。注意 JPC 和 JP2 可以有不同的色彩深度的成分。此情況下,“bits”的值是碰到的最高的位元深度。此外,JP2 檔案可能包含有多個 JPEG 2000 代碼流,此情況下,getimagesize() 返回此檔案頂層中碰到的第一個代碼流的值。
Note: 本函數不需要 GD 映像庫。
返回一個具有四個單元的數組。索引 0 包含映像寬度的像素值,索引 1 包含映像高度的像素值。索引 2 是映像類型的標記:1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM。這些標記與 PHP 4.3.0 新加的 IMAGETYPE 常量對應。索引 3 是文本字串,內容為“height="yyy" width="xxx"”,可直接用於 IMG 標記。
Example #1 getimagesize(檔案)
複製代碼 代碼如下:<?php
list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
echo "<img src=\"img/flag.jpg\" $attr>";
?>
URL 支援是 PHP 4.0.5 添加的。
Example #2 getimagesize(URL) 複製代碼 代碼如下:<?php
$size = getimagesize("http://www.jb51.net/images/logo.gif");
// if the file name has space in it, encode it properly
$size = getimagesize("http://www.example.com/gifs/lo go.gif");
?>
對於 JPG 映像,還會多返回兩個索引:channels 和 bits。channels 對於 RGB 映像其值為 3,對於 CMYK 映像其值為 4。bits 是每種顏色的位元。
自 PHP 4.3.0 起,bits 和 channels 對於其它映像類型也存在。但是這些值可能會把人搞糊塗。例如,GIF 總是對每個像素使用 3 個 channel,但是對於動畫 GIF 來說每個像素的位元無法通過全域顏色表計算出來。
某些格式可能不包含映像或者包含多個映像。此種情況下,getimagesize() 可能不能用來準確測定映像的大小。此時 getimagesize() 將返回零作為寬度和高度。
自 PHP 4.3.0 起,getimagesize() 還會返回額外的參數 mime,符合該映像的 MIME 類型。此資訊可以用來在 HTTP Content-type 頭資訊中發送正確的資訊:
Example #3 getimagesize() 和 MIME 類型 複製代碼 代碼如下:<?php
$size = getimagesize($filename);
$fp=fopen($filename, "rb");
if ($size && $fp) {
header("Content-type: {$size['mime']}");
fpassthru($fp);
exit;
} else {
// error
}
?>
可選的 imageinfo 參數允許從影像檔中提取一些擴充資訊。目前,這將以一個關聯陣列返回不同的 JPG APP 標識。某些程式用這些 APP 標識來在映像中嵌入文本資訊。一個非常常見的是 APP13 標識中嵌入的 IPTC » http://www.iptc.org/ 資訊。可以用 iptcparse() 函數來將二進位的 APP13 標識解析為可讀的資訊。
Example #4 getimagesize() 返回 IPTC 複製代碼 代碼如下:<?php
$size = getimagesize("testimg.jpg", &$info);
if (isset($info["APP13"])) {
$iptc = iptcparse($info["APP13"]);
var_dump($iptc);
}
?>
php 有個圖片GD庫getimagesize()函數。
有個函數是擷取圖片的基本資料。
getimagesize()
$img=getimagesize('圖片源');
寬度為=$img[0];
高度為=$img[1];
格式為=$img[2];
如果你要簡單的話可以更簡單如 複製代碼 代碼如下:$picpath = 'http://www.jb51.net/images/logo.gif';
$array = getimagesize($picpath);
print_r( $array );
echo '圖片寬度為'.$array[0];
echo '圖片高度為'.$array[1];
echo '圖片格式為'.$array[2];
//再一個利用getimagesize顯示縮圖的代碼 複製代碼 代碼如下:function show_thumbnail($file)
{
$max = 200 // Max. thumbnail width and height
$size = getimagesize($file);
if ( $size[0] <= $max && $size[1] <= $max )
{
$ret = '<img src="'.$file.'" '.$size[3].' border="0">';
}
else
{
$k = ( $size[0] >= $size[1] ) ? $size[0] / $max : $size[1] / $max;
$ret = '<a href="javascript教程:;" onClick="window.open('image.php?img=';
$ret .= $file.'','','width='.$size[0];
$ret .= ',height='.$size[1].'')">';
$ret .= '<img src="'.$file.'" width="'.floor($size[0]/$k).'" height="'.floor($size[1]/$k).'" border="0" alt="View full-size image"></a>';
}
return $ret;
}