Maison >développement back-end >tutoriel php >php 根据请求生成缩略图片保存到Linux图片服务器的代码

php 根据请求生成缩略图片保存到Linux图片服务器的代码

WBOY
WBOYoriginal
2016-07-25 08:59:19891parcourir
  1. /**
  2. * 缩略图片 Linux图片服务器
  3. * edit bbs.it-home.org
  4. */
  5. $picID=$_GET['imgID'];
  6. $picTypes=".".$_GET['imgType'];
  7. $picWidth=$_GET['ImgWidth'];
  8. if($picID!="")
  9. {
  10. //请求的是小图
  11. if($picWidth>0){
  12. //如果小图存在
  13. if(file_exists($picID."_".$picWidth.$picTypes))
  14. {
  15. outputImg($picID."_".$picWidth.$picTypes);
  16. }else
  17. {
  18. if(file_exists($picID."_0".$picTypes)){
  19. //如果不存在小图直接生成小图
  20. resizeImg($picID."_0".$picTypes,$picWidth,$picWidth,$picID."_".$picWidth.$picTypes);
  21. //输出
  22. outputImg($picID."_".$picWidth.$picTypes);
  23. }else
  24. {
  25. //如果大图不存在
  26. resizeImg('noDefaultImage.gif',$picWidth,$picWidth,noDefaultImage."_".$picWidth.".gif");
  27. //输出
  28. outputImg($picID."_".$picWidth.$picTypes);
  29. }
  30. }
  31. }
  32. //判断文件是否存在大图
  33. if(file_exists($picID."_0".$picTypes))
  34. {
  35. $img_file = $picID."_0".$picTypes;
  36. outputImg($img_file);
  37. }
  38. else
  39. {
  40. //如果不存在图片
  41. $img_file = 'noDefaultImage.gif';
  42. outputImg($img_file);
  43. }
  44. }
  45. //输出图片
  46. function outputImg($img_file)
  47. {
  48. $fp = fopen($img_file, 'rb');
  49. $content = fread($fp, filesize($img_file)); //二进制数据
  50. fclose($fp);
  51. header('Content-Type: image/gif');
  52. echo $content;
  53. }
  54. /**
  55. * 生成缩略图
  56. * $srcName----为原图片路径
  57. * $newWidth,$newHeight----分别缩略图的最大宽,高
  58. * $newName----为缩略图文件名(含路径)
  59. * @param string $srcName
  60. * @param int $newWidth
  61. * @param int $newHeight
  62. * @param string $newName
  63. * return viod
  64. */
  65. function resizeImg($srcName,$newWidth,$newHeight,$newName="")
  66. {
  67. if($newName=="")
  68. {
  69. $nameArr=explode('.',$srcName);
  70. $expName=array_pop($nameArr);
  71. $expName=$expName;
  72. array_push($nameArr,$expName);
  73. $newName = implode('.',$nameArr);
  74. }
  75. $info = "";
  76. $data = getimagesize($srcName,$info);
  77. switch ($data[2])
  78. {
  79. case 1:
  80. if(!function_exists("imagecreatefromgif")){
  81. echo "你的GD库不能使用GIF格式的图片,请使用Jpeg或PNG格式!返回";
  82. exit();
  83. }
  84. $im = ImageCreateFromGIF($srcName);
  85. break;
  86. case 2:
  87. if(!function_exists("imagecreatefromjpeg")){
  88. echo "你的GD库不能使用jpeg格式的图片,请使用其它格式的图片!返回";
  89. exit();
  90. }
  91. $im = ImageCreateFromJpeg($srcName);
  92. break;
  93. case 3:
  94. $im = ImageCreateFromPNG($srcName);
  95. break;
  96. }
  97. $srcW=ImageSX($im);
  98. $srcH=ImageSY($im);
  99. $newWidthH=$newWidth/$newHeight;
  100. $srcWH=$srcW/$srcH;
  101. if($newWidthH $ftoW=$newWidth;
  102. $ftoH=$ftoW*($srcH/$srcW);
  103. }
  104. else{
  105. $ftoH=$newHeight;
  106. $ftoW=$ftoH*($srcW/$srcH);
  107. }
  108. if($srcW>$newWidth||$srcH>$newHeight)
  109. {
  110. if(function_exists("imagecreatetruecolor"))
  111. {
  112. @$ni = ImageCreateTrueColor($ftoW,$ftoH);
  113. if($ni) ImageCopyResampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
  114. else
  115. {
  116. $ni=ImageCreate($ftoW,$ftoH);
  117. ImageCopyResized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
  118. }
  119. }
  120. else
  121. {
  122. $ni=ImageCreate($ftoW,$ftoH);
  123. ImageCopyResized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
  124. }
  125. if(function_exists('imagejpeg')) ImageJpeg($ni,$newName);
  126. else ImagePNG($ni,$newName);
  127. ImageDestroy($ni);
  128. }
  129. ImageDestroy($im);
  130. }
  131. ?>
复制代码


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn