1 && $ratio_h > 1) { if ($ratio_w < $ratio_h) { $ratio = $ratio_h; } else { $ratio = $ratio_w; } // 定義一個中間的臨時映像,該映像的寬高比 正好滿足目標要求 $inter_w = (int) ($new_width / $ratio); $inter_h = (int) ($new_height / $ratio); $inter_img = imagecreatetruecolor($inter_w, $inter_h); imagecopy($inter_img, $src_img, 0, 0, 0, 0, $inter_w, $inter_h); // 產生一個以最大邊長度為大小的是靶心圖表像$ratio比例的臨時映像 // 定義一個新的映像 $new_img = imagecreatetruecolor($new_width, $new_height); imagecopyresampled($new_img, $inter_img, 0, 0, 0, 0, $new_width, $new_height, $inter_w, $inter_h); switch ($type) { case IMAGETYPE_JPEG: imagejpeg($new_img, $dst_file, 100); // 儲存映像 break; case IMAGETYPE_PNG: imagepng($new_img, $dst_file, 100); break; case IMAGETYPE_GIF: imagegif($new_img, $dst_file, 100); break; default: break; } } else { $ratio = $ratio_h > $ratio_w ? $ratio_h : $ratio_w; //取比例大的那個值 // 定義一個中間的大映像,該映像的高或寬和靶心圖表像相等,然後對原圖放大 $inter_w = (int) ($w * $ratio); $inter_h = (int) ($h * $ratio); $inter_img = imagecreatetruecolor($inter_w, $inter_h); //將原圖縮放比例後裁剪 imagecopyresampled($inter_img, $src_img, 0, 0, 0, 0, $inter_w, $inter_h, $w, $h); // 定義一個新的映像 $new_img = imagecreatetruecolor($new_width, $new_height); imagecopy($new_img, $inter_img, 0, 0, 0, 0, $new_width, $new_height); switch ($type) { case IMAGETYPE_JPEG: imagejpeg($new_img, $dst_file, 100); // 儲存映像 break; case IMAGETYPE_PNG: imagepng($new_img, $dst_file, 100); break; case IMAGETYPE_GIF: imagegif($new_img, $dst_file, 100); break; default: break; } }}my_image_resize('Lighthouse.jpg','new.jpg',200,200);
以上就介紹了PHP實用圖片壓縮方法,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。