Heim >Backend-Entwicklung >PHP-Tutorial >php使用GD创建保持宽高比的缩略图

php使用GD创建保持宽高比的缩略图

WBOY
WBOYOriginal
2016-07-25 08:43:07958Durchsuche
  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 {
  25. // Input is smaller than thumbnail, do nothing
  26. return $sourceImage;
  27. }
  28. elseif ( ($wRatio * $height) {
  29. // Image is horizontal
  30. $tHeight = ceil($wRatio * $height);
  31. $tWidth = $maxSize;
  32. }
  33. else
  34. {
  35. // Image is vertical
  36. $tWidth = ceil($hRatio * $width);
  37. $tHeight = $maxSize;
  38. }
  39. $thumb = imagecreatetruecolor($tWidth, $tHeight);
  40. if ( $sourceImage === false )
  41. {
  42. // Could not load image
  43. return false;
  44. }
  45. // Copy resampled makes a smooth thumbnail
  46. imagecopyresampled($thumb, $sourceImage, 0, 0, 0, 0, $tWidth, $tHeight, $width, $height);
  47. imagedestroy($sourceImage);
  48. return $thumb;
  49. }
  50. /**
  51. * Save the image to a file. Type is determined from the extension.
  52. * $quality is only used for jpegs.
  53. * Author: mthorn.net
  54. */
  55. function imageToFile($im, $fileName, $quality = 80)
  56. {
  57. if ( !$im || file_exists($fileName) )
  58. {
  59. return false;
  60. }
  61. $ext = strtolower(substr($fileName, strrpos($fileName, '.')));
  62. switch ( $ext )
  63. {
  64. case '.gif':
  65. imagegif($im, $fileName);
  66. break;
  67. case '.jpg':
  68. case '.jpeg':
  69. imagejpeg($im, $fileName, $quality);
  70. break;
  71. case '.png':
  72. imagepng($im, $fileName);
  73. break;
  74. case '.bmp':
  75. imagewbmp($im, $fileName);
  76. break;
  77. default:
  78. return false;
  79. }
  80. return true;
  81. }
  82. $im = thumbnail('temp.jpg', 100);
  83. imageToFile($im, 'temp-thumbnail.jpg');
复制代码

php


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
Vorheriger Artikel:php随机密码生成器 Nächster Artikel:360提供的php防注入代码