国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP批量生成圖片縮略圖的方法

2024-05-04 23:36:29
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了PHP批量生成圖片縮略圖的方法,涉及php針對圖片屬性操作的相關技巧,需要的朋友可以參考下

本文實例講述了PHP批量生成圖片縮略圖的方法。分享給大家供大家參考。具體如下:

 

 
  1. <?php 
  2. //用PHP批量生成圖片縮略圖 
  3. function mkdirs($dirname,$mode=0777) 
  4. //創建目錄(目錄, [模式]) 
  5. if(!is_dir($dirname)) 
  6. mkdirs($dirname,$mode); //如果目錄不存在,遞歸建立 
  7. return mkdir($dirname,$mode); 
  8. return true; 
  9. function savefile($filename,$content=''
  10. //保存文件(文件, [內容]) 
  11. if(function_exists(file_put_contents)) 
  12. file_put_contents($filename,$content); 
  13. else 
  14. $fp=fopen($filename,"wb"); 
  15. fwrite($fp,$content); 
  16. fclose($fp); 
  17. function getsuffix($filename//獲取文件名后綴 
  18. return end(explode(".",$filename)); 
  19. function checksuffix($filename,$arr//是否為允許類型(當前, 允許) 
  20. if(!is_array($arr)) 
  21. $arr=explode(",",str_replace(" ","",$arr)); 
  22. return in_array($filename,$arr) ? 1 : 0; 
  23. class image 
  24. var $src//源地址 
  25. var $newsrc//新圖路徑(本地化后) 
  26. var $allowtype=array(".gif",".jpg",".png",".jpeg"); //允許的圖片類型 
  27. var $regif=0; //是否縮略GIF, 為0不處理 
  28. var $keep=0; //是否保留源文件(1為保留, 0為MD5) 
  29. var $over=0; //是否可以覆蓋已存在的圖片,為0則不可覆蓋 
  30. var $dir//圖片源目錄 
  31. var $newdir//處理后的目錄 
  32. function __construct($olddir=null,$newdir=null) 
  33. $this->dir=$olddir ? $olddir : "./images/temp"
  34. $this->newdir=$newdir ? $newdir : "./images/s"
  35. function reNames($src
  36. $md5file=substr(md5($src),10,10).strrchr($src,"."); 
  37. //MD5文件名后(例如:3293okoe.gif) 
  38. $md5file=$this->w."_".$this->h."_".$md5file
  39. //處理后文件名 
  40. return $this->newdir."/".$md5file
  41. //將源圖片,MD5文件名后保存到新的目錄里 
  42. function Mini($src,$w,$h,$q=80) 
  43. //生成縮略圖 Mini(圖片地址, 寬度, 高度, 質量) 
  44. $this->src=$src
  45. $this->w=$w
  46. $this->h=$h
  47. if(strrchr($src,".")==".gif" && $this->regif==0) 
  48. //是否處理GIF圖 
  49. return $this->src; 
  50. if($this->keep==0) //是否保留源文件,默認不保留 
  51. $newsrc=$this->reNames($src); //改名后的文件地址 
  52. else //保持原名 
  53. $src=str_replace("//","/",$src); 
  54. $newsrc=$this->newdir.strrchr($src,"/"); 
  55. if(file_exists($newsrc) && $this->over==0) 
  56. //如果已存在,直接返回地址 
  57. return $newsrc
  58. if(strstr($src,"http://") && !strstr($src,$_SERVER['HTTP_HOST'])) 
  59. //如果是網絡文件,先保存 
  60. $src=$this->getimg($src); 
  61. $arr=getimagesize($src); //獲取圖片屬性 
  62. $width=$arr[0]; 
  63. $height=$arr[1]; 
  64. $type=$arr[2]; 
  65. switch($type
  66. case 1: //1 = GIF, 
  67. $im=imagecreatefromgif($src); 
  68. break
  69. case 2: //2 = JPG 
  70. $im=imagecreatefromjpeg($src); 
  71. break
  72. case 3: //3 = PNG 
  73. $im=imagecreatefrompng($src); 
  74. break
  75. default
  76. return 0; 
  77. //處理縮略圖 
  78. $nim=imagecreatetruecolor($w,$h); 
  79. $k1=round($h/$w,2); 
  80. $k2=round($height/$width,2); 
  81. if($k1<$k2
  82. $width_a=$width
  83. $height_a=round($width*$k1); 
  84. $sw=0; 
  85. $sh=($height-$height_a)/2; 
  86. else 
  87. $width_a=$height/$k1
  88. $height_a=$height
  89. $sw=($width-$width_a)/2; 
  90. $sh = 0; 
  91. //生成圖片 
  92. if(function_exists(imagecopyresampled)) 
  93. imagecopyresampled($nim,$im,0,0,$sw,$sh,$w,$h,$width_a,$height_a); 
  94. else 
  95. imagecopyresized($nim,$im,0,0,$sw,$sh,$w,$h,$width_a,$height_a); 
  96. if(!is_dir($this->newdir)) 
  97. mkdir($this->newdir); 
  98. switch($type//保存圖片 
  99. case 1: 
  100. $rs=imagegif($nim,$newsrc); 
  101. break
  102. case 2: 
  103. $rs=imagejpeg($nim,$newsrc,$q); 
  104. break
  105. case 3: 
  106. $rs=imagepng($nim,$newsrc); 
  107. break
  108. default
  109. return 0; 
  110. return $newsrc//返回處理后路徑 
  111. function getimg($filename
  112. $md5file=$this->dir."/".substr(md5($filename),10,10).strrchr($filename,"."); 
  113. if(file_exists($md5file)) 
  114. return $md5file
  115. //開始獲取文件,并返回新路徑 
  116. $img=file_get_contents($filename); 
  117. if($img
  118. if(!is_dir($this->dir)) 
  119. mkdir($this->dir); 
  120. savefile($md5file,$img); 
  121. return $md5file
  122. function reImg($src,$w,$h,$q
  123. //轉換縮略圖(文件名和結構不變) 
  124. $this->keep=1; 
  125. return $this->Mini($src,$w,$h,$q); 
  126. //return 生成的地址 
  127. $image=new image(); 
  128. echo $image->reImg("images/zht.jpg",75,75,80); 
  129. echo "<br/>"
  130. echo $image->reImg("images/m8920.jpg",75,75,80); 
  131. echo "<br/>"
  132. echo $image->getimg("./images/s/zht.jpg"); 
  133. ?> 

希望本文所述對大家的php程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 彭泽县| 武夷山市| 清苑县| 洞口县| 睢宁县| 辽宁省| 忻城县| 化隆| 青铜峡市| 兴国县| 汶上县| 蒙城县| 磐石市| 五寨县| 麦盖提县| 大港区| 雷州市| 昌黎县| 大丰市| 湖南省| 塔城市| 松原市| 北安市| 凤台县| 太仓市| 铜山县| 澜沧| 尼木县| 昌都县| 郑州市| 高雄市| 诸城市| 萨迦县| 黑山县| 景洪市| 安西县| 呼和浩特市| 新田县| 潜江市| 威海市| 鄄城县|