首页 > 开发 > PHP > 正文

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

2024-05-04 23:34:27
字体:
来源:转载
供稿:网友

这篇文章主要介绍了php使用GD创建保持宽高比缩略图的方法,涉及php使用GD库操作图片的技巧,需要的朋友可以参考下

本文实例讲述了php使用GD创建保持宽高比缩略图的方法。分享给大家供大家参考。具体如下:

 

 
  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. $info = getimagesize($inputFileName); 
  8. $type = isset($info['type']) ? $info['type'] : $info[2]; 
  9. // Check support of file type 
  10. if ( !(imagetypes() & $type) ) 
  11. // Server does not support file type 
  12. return false; 
  13. $width = isset($info['width']) ? $info['width'] : $info[0]; 
  14. $height = isset($info['height']) ? $info['height'] : $info[1]; 
  15. // Calculate aspect ratio 
  16. $wRatio = $maxSize / $width
  17. $hRatio = $maxSize / $height
  18. // Using imagecreatefromstring will automatically detect the file type 
  19. $sourceImage = imagecreatefromstring(file_get_contents($inputFileName)); 
  20. // Calculate a proportional width and height no larger than the max size. 
  21. if ( ($width <= $maxSize) && ($height <= $maxSize) ) 
  22. // Input is smaller than thumbnail, do nothing 
  23. return $sourceImage
  24. elseif ( ($wRatio * $height) < $maxSize ) 
  25. // Image is horizontal 
  26. $tHeight = ceil($wRatio * $height); 
  27. $tWidth = $maxSize
  28. else 
  29. // Image is vertical 
  30. $tWidth = ceil($hRatio * $width); 
  31. $tHeight = $maxSize
  32. $thumb = imagecreatetruecolor($tWidth$tHeight); 
  33. if ( $sourceImage === false ) 
  34. // Could not load image 
  35. return false; 
  36. // Copy resampled makes a smooth thumbnail 
  37. imagecopyresampled($thumb,$sourceImage,0,0,0,0,$tWidth,$tHeight,$width,$height); 
  38. imagedestroy($sourceImage); 
  39. return $thumb
  40. /** 
  41. * Save the image to a file. Type is determined from the extension. 
  42. * $quality is only used for jpegs. 
  43. * Author: mthorn.net 
  44. */ 
  45. function imageToFile($im$fileName$quality = 80) 
  46. if ( !$im || file_exists($fileName) ) 
  47. return false; 
  48. $ext = strtolower(substr($fileNamestrrpos($fileName'.'))); 
  49. switch ( $ext ) 
  50. case '.gif'
  51. imagegif($im$fileName); 
  52. break
  53. case '.jpg'
  54. case '.jpeg'
  55. imagejpeg($im$fileName$quality); 
  56. break
  57. case '.png'
  58. imagepng($im$fileName); 
  59. break
  60. case '.bmp'
  61. imagewbmp($im$fileName); 
  62. break
  63. default
  64. return false; 
  65. return true; 
  66. $im = thumbnail('temp.jpg', 100); 
  67. imageToFile($im'temp-thumbnail.jpg'); 

希望本文所述对大家的php程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表