PHP使用GD函式庫製作縮圖+儲存本地
阿新 • • 發佈:2019-02-06
<?php
// $name="./img/1.jpg";
// $w=300;
// $h=300;
// $prefix='thumb_111';
//縮略字首,原圖保留,縮圖也要保留
//獲取相關引數,計算比例
function suolue($name, $w,$h,$prefix='thumb_111'){
function getinfo($name){
//getimagesize($dname)函式可以動態的獲取圖片型別,大小,寬度和高度等
$info=getimagesize($name);
$width=$info[0];
$height=$info[1];
$mime=$info['mime'];
switch ($mime) {
case 'image/jpeg':
$res=imagecreatefromjpeg($name);
break;
case 'image/gif':
$res=imagecreatefromgif($name);
break;
case 'image/png':
$res=imagecreatefrompng($name);
break;
case 'image/wbmp':
$res=imagecreatefromwbmp($name);
break;
}
return array('width'=>$width,'height'=>$height,'res'=>$res);
}
$info=getinfo($name);
$width=$info['width'];
$height=$info['height'];
$res=$info['res'];
//判斷圖片是橫圖還是豎圖
if($width>$height){
//橫圖
$b1=$height/$width;
$h=$w*$b1;
}else{
//豎圖
$b1=$width/$height;
$w=$h*$b1;
}
//3,建立一個畫布,畫布的寬度,高度為要鎖房的寬度和高度
$img=imagecreatetruecolor($w,$h);
//4,開始把圖片重新設定大小
imagecopyresampled($img, $res, 0, 0, 0, 0, $w, $h, $width, $height);
//5,輸出影象
// header("content-type:image/png");
//5,會趨於副檔名,生成新檔名,儲存影象
$ext=pathinfo($name,PATHINFO_EXTENSION);
$rand_name=$prefix.md5(time().mt_rand()).".".$ext;
// imagepng($img);
switch(strtolower($ext)){
case 'jpg':
case 'jpeg':
case 'jpe':
imagejpeg($img,$rand_name);
break;
case 'png':
imagepng($img,$rand_name);
break;
case 'gif':
imagegif($img,$rand_name);
break;
case 'bmp':
case 'wbmp':
imagewbmp($img,$rand_name);
break;
}
//銷燬資源
imagedestroy($res);
imagedestroy($img);
}