PHP等比例压缩图片的实例代码

本文通过一段简单的代码给大家介绍PHP等比例压缩图片的方法,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧。

具体代码如下所示:

  1. /**
  2. * desription 压缩图片
  3. * @param sting $imgsrc 图片路径
  4. * @param string $imgdst 压缩后保存路径
  5. */
  6. public function compressedImage($imgsrc, $imgdst) {
  7. list($width, $height, $type) = getimagesize($imgsrc);
  8. $new_width = $width;//压缩后的图片宽
  9. $new_height = $height;//压缩后的图片高
  10. if($width >= 600){
  11. $per = 600 / $width;//计算比例
  12. $new_width = $width * $per;
  13. $new_height = $height * $per;
  14. }
  15. switch ($type) {
  16. case 1:
  17. $giftype = check_gifcartoon($imgsrc);
  18. if ($giftype) {
  19. header('Content-Type:image/gif');
  20. $image_wp = imagecreatetruecolor($new_width, $new_height);
  21. $image = imagecreatefromgif($imgsrc);
  22. imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  23. //90代表的是质量、压缩图片容量大小
  24. imagejpeg($image_wp, $imgdst, 90);
  25. imagedestroy($image_wp);
  26. imagedestroy($image);
  27. }
  28. break;
  29. case 2:
  30. header('Content-Type:image/jpeg');
  31. $image_wp = imagecreatetruecolor($new_width, $new_height);
  32. $image = imagecreatefromjpeg($imgsrc);
  33. imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  34. //90代表的是质量、压缩图片容量大小
  35. imagejpeg($image_wp, $imgdst, 90);
  36. imagedestroy($image_wp);
  37. imagedestroy($image);
  38. break;
  39. case 3:
  40. header('Content-Type:image/png');
  41. $image_wp = imagecreatetruecolor($new_width, $new_height);
  42. $image = imagecreatefrompng($imgsrc);
  43. imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  44. //90代表的是质量、压缩图片容量大小
  45. imagejpeg($image_wp, $imgdst, 90);
  46. imagedestroy($image_wp);
  47. imagedestroy($image);
  48. break;
  49. }
  50. }