> 백엔드 개발 > PHP 튜토리얼 > GD를 사용하여 종횡비를 유지하는 썸네일을 만드는 PHP

GD를 사용하여 종횡비를 유지하는 썸네일을 만드는 PHP

WBOY
풀어 주다: 2016-07-25 08:43:07
원래의
944명이 탐색했습니다.
  1. /**
  2. * Create a thumbnail image from $inputFileName no taller or wider than
  3. * $maxSize. Returns the new image resource or false on error.
  4. * Author: mthorn.net
  5. */
  6. function thumbnail($inputFileName, $maxSize = 100)
  7. {
  8. $info = getimagesize($inputFileName);
  9. $type = isset($info['type']) ? $info['type'] : $info[2];
  10. // Check support of file type
  11. if ( !(imagetypes() & $type) )
  12. {
  13. // Server does not support file type
  14. return false;
  15. }
  16. $width = isset($info['width']) ? $info['width'] : $info[0];
  17. $height = isset($info['height']) ? $info['height'] : $info[1];
  18. // Calculate aspect ratio
  19. $wRatio = $maxSize / $width;
  20. $hRatio = $maxSize / $height;
  21. // Using imagecreatefromstring will automatically detect the file type
  22. $sourceImage = imagecreatefromstring(file_get_contents($inputFileName));
  23. // Calculate a proportional width and height no larger than the max size.
  24. if ( ($width <= $maxSize) && ($height <= $maxSize) )
  25. {
  26. // Input is smaller than thumbnail, do nothing
  27. return $sourceImage;
  28. }
  29. elseif ( ($wRatio * $height) < $maxSize )
  30. {
  31. // Image is horizontal
  32. $tHeight = ceil($wRatio * $height);
  33. $tWidth = $maxSize;
  34. }
  35. else
  36. {
  37. // Image is vertical
  38. $tWidth = ceil($hRatio * $width);
  39. $tHeight = $maxSize;
  40. }
  41. $thumb = imagecreatetruecolor($tWidth, $tHeight);
  42. if ( $sourceImage === false )
  43. {
  44. // Could not load image
  45. return false;
  46. }
  47. // Copy resampled makes a smooth thumbnail
  48. imagecopyresampled($thumb, $sourceImage, 0, 0, 0, 0, $tWidth, $tHeight, $width, $height);
  49. imagedestroy($sourceImage);
  50. return $thumb;
  51. }
  52. /**
  53. * Save the image to a file. Type is determined from the extension.
  54. * $quality is only used for jpegs.
  55. * Author: mthorn.net
  56. */
  57. function imageToFile($im, $fileName, $quality = 80)
  58. {
  59. if ( !$im || file_exists($fileName) )
  60. {
  61. return false;
  62. }
  63. $ext = strtolower(substr($fileName, strrpos($fileName, '.')));
  64. switch ( $ext )
  65. {
  66. case '.gif':
  67. imagegif($im, $fileName);
  68. break;
  69. case '.jpg':
  70. case '.jpeg':
  71. imagejpeg($im, $fileName, $quality);
  72. break;
  73. case '.png':
  74. imagepng($im, $fileName);
  75. break;
  76. case '.bmp':
  77. imagewbmp($im, $fileName);
  78. break;
  79. default:
  80. return false;
  81. }
  82. return true;
  83. }
  84. $im = thumbnail('temp.jpg', 100);
  85. imageToFile($im, 'temp-thumbnail.jpg');
复制代码

PHP


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿