程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP批量生成圖片縮略圖的方法

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

編輯:關於PHP編程

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

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

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

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved