Home >Backend Development >PHP Tutorial >PHP gd library implements image size cropping and scaling

PHP gd library implements image size cropping and scaling

WBOY
WBOYOriginal
2016-07-25 08:51:472161browse
  1. //Image cropping and scaling functions
  2. //$filepath image path, $percent scaling percentage
  3. function imagepress($filepath,$percent='0.5'){
  4. //Image type
  5. header('Content- Type: image/jpeg');
  6. // Get the new image size
  7. list($width, $height) = getimagesize($filepath);
  8. $new_width = $width * $percent;
  9. $new_height = $height * $ percent;
  10. // Resampling
  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. // Output
  15. return imagejpeg($image_p, null, 100);
  16. }
Copy code

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

Rendering: PHP gd library implements image size cropping and scaling

Example:

  1. //$filepath image path, $new_width new width, $new_height 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. // The source image is too high

  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. // The source image is too wide
  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. // The source image is moderate
  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. // Cropped
  51. imagecopy($cropped_image, $source_image, 0, 0, $source_x, $source_y , $cropped_width, $cropped_height);
  52. // Scaling
  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. }
Copy code


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn