PHP做前後端圖片上傳的時候 需要做圖片縮放處理
結合了網上很多例子整理的一個方法
//方法參數爲圖片名
function changeSize($str_file)
{
$size=getimagesize($str_file);
//這個方法會返回一個數組,第一個元素 (索引值 0) 是圖片的高度,單位是像素 (pixel)。第二個元素 (索引值 1) 是圖片的寬度。第三個元素 (索引值 2) 是圖片的文件格式,其值 1 爲 GIF 格式、 2 爲 JPEG/JPG 格式、3 爲 PNG 格式。第四個元素 (索引值 3) 爲圖片的高與寬字符串,height=xxx width=yyy。
//因爲PHP只能對資源進行操作,所以要對需要進行縮放的圖片進行拷貝,創建爲新的資源
//根據圖片的格式使用不同的方法
if($size[2]==1)
$src=imagecreatefromgif($str_file);
if($size[2]==2)
$src=imagecreatefromjpeg($str_file);
if($size[2]==3)
$src=imagecreatefrompng($str_file);
//取得源圖片的寬度和高度
$w = $size['0'];
$h = $size['1'];
//指定縮放出來的最大的寬度或高度
$max = 600;
//根據最大值爲300,算出另一個邊的長度,得到縮放後的圖片寬度和高度
if ($w > $h) {
$w = $max;
$h = $h * ($max / $size['0']);
} else {
$h = $max;
$w = $w * ($max / $size['1']);
}
//聲明一個$w寬,$h高的真彩圖片資源,此時只是一個有寬高的黑白圖片。
$image = imagecreatetruecolor($w, $h);
//關鍵函數,參數(目標資源,源,目標資源的開始座標x,y, 源資源的開始座標x,y,目標資源的寬高w,h,源資源的寬高w,h)返回值爲bool
imagecopyresampled($image, $src, 0, 0, 0, 0, $w, $h, $size['0'], $size['1']);
//將圖片塞進去,也是根據圖片不同的格式選用不同的方法,返回值爲bool。
if($size[2]==1)
$result = imagegif($image,$str_file);
if($size[2]==2)
$result = imagejpeg($image,$str_file);
if($size[2]==3)
$result = imagepng($image,$str_file);
//銷燬資源
imagedestroy($image);
return $result ;
}