php 创建等比例图片代码

说明:$maxwidth和$maxheight只能传递一个,如果传最大宽度将自动计算高度,如果传最大高度将自动计算宽度.

返 回 值:如果创建成功返回文件保存的地址,否则返回false.

php 创建等比例图片代码如下:

  1. <?php
  2. /************************************************************************
  3. * 函数名称:createSmallImg()
  4. * 函数说明:创建等比例图片
  5. * 输入参数:
  6. $dir 保存路径
  7. $source_img 原图片名称
  8. $small_ex 缩率图文件名后缀
  9. $maxwidth 最大宽度
  10. $maxheight 最大高度
  11. * 说 明:$maxwidth和$maxheight只能传递一个,如果传最大宽度将自动计算高度,如果传最大高度将自动计算宽度
  12. * 返 回 值:如果创建成功返回文件保存的地址,否则返回false
  13. * 编 写 者:李小宇
  14. * 编写时间:2011/8/18
  15. **************************************************************************/
  16. function createSmallImg($dir,$source_img,$small_ex="_s",$maxwidth='',$maxheight='') {
  17. if(!emptyempty($maxwidth) && !emptyempty($maxheight)) {
  18. return false;
  19. }
  20. $img_name=substr($source_img,0,-4);
  21. $img_ex = strtolower(substr(strrchr($source_img,"."),1));
  22. /*注释的这段用作直接在浏览器上显示图片
  23. $im=imagecreatefromjpeg($file);
  24. header("Content-type: image/jpeg");
  25. imagejpeg($im);*/
  26. switch($img_ex) {
  27. case "jpg":
  28. $src_img=imagecreatefromjpeg($dir.$source_img);
  29. break;
  30. case "gif":
  31. $src_img=imagecreatefromgif($dir.$source_img);
  32. break;
  33. case "png":
  34. $src_img=imagecreatefrompng($dir.$source_img);
  35. break;
  36. }//开源代码phpfensi.com
  37. $old_width=imagesx($src_img);
  38. $old_height=imagesy($src_img);
  39. if(!emptyempty($maxheight) && $old_height>=$maxheight) {
  40. $new_height=$maxheight;
  41. $new_width=round(($old_width*$new_height)/$old_height);
  42. } elseif(!emptyempty($maxwidth) && $old_width>=$maxwidth) {
  43. $new_width=$maxwidth;
  44. $new_height=round(($old_height*$new_width)/$old_width);
  45. }
  46. if(!emptyempty($new_width) || !emptyempty($new_height)) {
  47. if($img_ex=="jpg" || $img_ex=="png") {
  48. $dst_img=imagecreatetruecolor($new_width,$new_height);
  49. } else {
  50. $dst_img=imagecreate($new_width,$new_height);
  51. }
  52. imagecopyresampled($dst_img,$src_img,0,0,0,0,$new_width,$new_height,$old_width,$old_height);
  53. $smallname=$dir.$img_name.$small_ex.".".$img_ex;
  54. switch($img_ex) {
  55. case "jpg":
  56. imagejpeg($dst_img,$smallname,100);
  57. break;
  58. case "gif":
  59. imagegif($dst_img,$smallname);
  60. break;
  61. case "png":
  62. imagepng($dst_img,$smallname);
  63. break;
  64. }
  65. }
  66. return $smallname;
  67. }
  68. ?>