應用場景:
app 小程序 以及管理后臺上傳的圖片很大,占用空間且無用,則考慮進行圖片壓縮。
php代碼如下:
/**
* 上傳后重新壓縮圖片
* @param $sourcePath 原圖
* @param $targetPath 保存路徑
* @param $quality 圖片質量
*/
function compressImage($sourcePath, $targetPath, $quality) {
$info = getimagesize($sourcePath);
$mime = $info['mime'];
$width = $info[0];
$height = $info[1];
//壓縮后的圖片寬
$newWidth = $width;
//壓縮后的圖片高
$newHeight = $height;
// 壓縮到750寬
if($width >= 750){
$per = 750 / $width;//計算比例
$newWidth = $width * $per;
$newHeight = $height * $per;
}
$image_wp = imagecreatetruecolor($newWidth, $newHeight);
switch($mime) {
case 'image/jpeg':
$image = imagecreatefromjpeg($sourcePath);
break;
case 'image/png':
$image = imagecreatefrompng($sourcePath);
break;
case 'image/gif':
$image = imagecreatefromgif($sourcePath);
break;
default:
return false;
}
imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
imagejpeg($image_wp, $targetPath, $quality);
imagedestroy($image);
imagedestroy($image_wp);
return true;
}