php 壓縮各格式圖片,處理png格式圖片背景黑色問題
阿新 • • 發佈:2019-01-30
//壓縮圖片
//$srcFile 檔名
//$percent壓縮比
//$quality圖片質量
function pictumb($srcFile,$percent,$quality){
$dstFile = $srcFile;//保留名字
//header('Content-Type: image/jpeg');
// 獲取新的尺寸
list($width, $height) = getimagesize($srcFile);
if ($width>600){
$new_width = $width / $percent;
$new_height = $height / $percent;
}else{
$new_width =$width;
$new_height = $height;
}
// 重新取樣
$image_p = imagecreatetruecolor($new_width, $new_height);
//設定顏色
$color=imagecolorallocate($image_p,255,255,255);
imagecolortransparent($image_p,$color);
imagefill($image_p,0,0,$color);
//獲取格式
$format=substr($srcFile,strrpos($srcFile, '.'));
switch ($format) {
case '.png':
$image=imagecreatefrompng($srcFile);
break;
case '.jpeg':
$image=imagecreatefromjpeg($srcFile);
break;
case '.bmp':
$image=imagecreatefromwbmp($srcFile);
break;
case '.gif':
$image=imagecreatefromgif($srcFile);
break;
default:
$image=imagecreatefromjpeg($srcFile);
break;
}
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
chmod($srcFile,0777);//unlink函式要求對刪除的圖片有777的許可權
unlink($srcFile);//先刪除圖片,在進行儲存
// 輸出
switch ($format) {
case '.png':
imagepng($image_p,$dstFile);
break;
case '.jpeg':
imagejpeg($image_p,$dstFile, $quality);
break;
case '.bmp':
imagewbmp($image_p,$dstFile);
break;
case '.gif':
imagegif( $image_p,$dstFile);
break;
default:
imagejpeg($image_p,$dstFile,$quality);
break;
}
}