本例子介紹使用php自帶的GD庫對png和jpg圖片進行放大和縮小處理
<?php
$target_width = 120; //目標圖片寬度 $target_height = 150; //目標圖片高度 $target_img = 'me.jpg'; //剪切圖片 deal($target_width,$target_height,$target_img); //調用主函數
主函數
/**
*主函數: 獲取圖片信息,准備參數
*/
function deal($target_width,$target_height,$target_img){
$img_info=getimagesize($target_img); // 獲取原圖尺寸
$original_width=$img_info[0]; //原圖片寬度
$original_height=$img_info[1]; //原圖片高度
$original_mime=$img_info['mime'];
$type=substr($original_mime,6); //原本$original_mime值為'image/類型',通過從第六位字符開始截取得到圖片類型
$target_scale = $target_height/$target_width; //目標圖像長寬比
$original_scale = $original_height/$original_width; // 原圖片長寬比
if ($original_scale>=$target_scale){ // 過高
$w = intval($src_w);
$h = intval($target_scale*$w);
$x = 0;
$y = ($original_height - $h)/3;
} else { // 過寬
$h = intval($original_height);
$w = intval($h/$target_scale);
$x = ($original_width - $w)/2;
$y = 0;
}
switch($type){
case 'jpeg':
dealjpg($target_img, $w, $h,$x, $y, $original_width, $original_height, $target_width, $target_height); //調用處理jpg函數
break;
case 'png':
dealpng($target_img, $w, $h,$x, $y, $original_width, $original_height, $target_width, $target_height); //調用處理png函數
break;
default:
echo "請確認需要處理圖片類型是否正確";
break;
}
}
處理jpg函數
/**
* 處理jpg函數
*/
function dealjpg($target_img, $w, $h,$x, $y, $original_width, $original_height, $target_width, $target_height){
// 剪裁
$source=imagecreatefromjpeg($target_img); //創建一個新圖象
$croped=imagecreatetruecolor($w, $h); //新建一個真彩色圖像
imagecopy($croped, $source, 0, 0, $x, $y, $original_width, $original_height); //拷貝圖像的一部分
// 縮放
$scale = $target_width / $w;
$target = imagecreatetruecolor($target_width, $target_height); //新建一個真彩色圖像
$final_w = intval($w * $scale);
$final_h = intval($h * $scale);
imagecopyresampled($target, $croped, 0, 0, 0, 0, $final_w,$final_h, $w, $h); //重采樣拷貝部分圖像並調整大小
// 保存
$timestamp = time();
imagejpeg($target, "$timestamp.jpg");
imagedestroy($target);
}
處理png函數
/**
* 處理png函數
*/
function dealpng($target_img,$w,$h,$x,$y,$original_width,$original_height,$target_width,$target_height){
// 剪裁
$source=imagecreatefrompng($target_img);
$croped=imagecreatetruecolor($w, $h); //新建一個真彩色圖像
imagecopy($croped, $source, 0, 0, $x, $y, $original_width, $original_height); //拷貝圖像的一部分
// 縮放
$scale = $target_width / $w;
$target = imagecreatetruecolor($target_width, $target_height); //新建一個真彩色圖像
$final_w = intval($w * $scale);
$final_h = intval($h * $scale);
imagecopyresampled($target, $croped, 0, 0, 0, 0, $final_w,$final_h, $w, $h); //重采樣拷貝部分圖像並調整大小
// 保存
$timestamp = time();
imagepng($target, "$timestamp.png");
imagedestroy($target);
}
