Heim  >  Artikel  >  Backend-Entwicklung  >  php gd库实现图片大小裁剪与缩放

php gd库实现图片大小裁剪与缩放

WBOY
WBOYOriginal
2016-07-25 08:51:472101Durchsuche
  1. //图片裁剪、缩放函数
  2. //$filepath图片路径,$percent缩放百分比
  3. function imagepress($filepath,$percent='0.5'){
  4. // 图片类型
  5. header('Content-Type: image/jpeg');
  6. // 获得新的图片大小
  7. list($width, $height) = getimagesize($filepath);
  8. $new_width = $width * $percent;
  9. $new_height = $height * $percent;
  10. // 重新取样
  11. $image_p = imagecreatetruecolor($new_width, $new_height);
  12. $image = imagecreatefromjpeg($filepath);
  13. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  14. // 输出
  15. return imagejpeg($image_p, null, 100);
  16. }
复制代码

原图: php gd库图片大小裁剪与缩放

效果图: /d/file/2015/03/20150303070128641.jpg

例子:

  1. //$filepath图片路径,$new_width新的宽度,$new_height新的高度

  2. function imagepress($filepath, $new_width, $new_height)
  3. {
  4. $source_info = getimagesize($filepath);
  5. $source_width = $source_info[0];
  6. $source_height = $source_info[1];
  7. $source_mime = $source_info['mime'];
  8. $source_ratio = $source_height / $source_width;
  9. $target_ratio = $new_height / $new_width;
  10. // 源图过高

  11. if ($source_ratio > $target_ratio)
  12. {
  13. $cropped_width = $source_width;
  14. $cropped_height = $source_width * $target_ratio;
  15. $source_x = 0;
  16. $source_y = ($source_height - $cropped_height) / 2;
  17. }
  18. // 源图过宽
  19. elseif ($source_ratio {
  20. $cropped_width = $source_height / $target_ratio;
  21. $cropped_height = $source_height;
  22. $source_x = ($source_width - $cropped_width) / 2;
  23. $source_y = 0;
  24. }
  25. // 源图适中
  26. else
  27. {
  28. $cropped_width = $source_width;
  29. $cropped_height = $source_height;
  30. $source_x = 0;
  31. $source_y = 0;
  32. }
  33. switch ($source_mime)
  34. {
  35. case 'image/gif':
  36. $source_image = imagecreatefromgif($filepath);
  37. break;
  38. case 'image/jpeg':
  39. $source_image = imagecreatefromjpeg($filepath);
  40. break;
  41. case 'image/png':
  42. $source_image = imagecreatefrompng($filepath);
  43. break;
  44. default:
  45. return false;
  46. break;
  47. }
  48. $target_image = imagecreatetruecolor($new_width, $new_height);
  49. $cropped_image = imagecreatetruecolor($cropped_width, $cropped_height);
  50. // 裁剪
  51. imagecopy($cropped_image, $source_image, 0, 0, $source_x, $source_y, $cropped_width, $cropped_height);
  52. // 缩放
  53. imagecopyresampled($target_image, $cropped_image, 0, 0, 0, 0, $new_width, $new_height, $cropped_width, $cropped_height);
  54. header('Content-Type: image/jpeg');
  55. imagejpeg($target_image);
  56. imagedestroy($source_image);
  57. imagedestroy($target_image);
  58. imagedestroy($cropped_image);
  59. }
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn