- function mkdirs($dirname,$mode=0777) //Create directory (directory, [mode])
- {
- if(!is_dir($ dirname))
- {
- mkdirs($dirname,$mode); //If the directory does not exist, create it recursively
- return mkdir($dirname,$mode);
- }
- return true;
- }
- function savefile($filename ,$content='') //Save file(file, [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) //Get the file name suffix
- {
- return end (explode(".",$filename));
- }
- function checksuffix($filename,$arr) //Whether it is an allowed type (current, allowed)
- {
- if(!is_array($arr))
- {
- $arr=explode(",",str_replace(" ","",$arr));
- }
- return in_array($filename,$arr) ? 1 : 0;
- }
- class image
- {
- var $src; //Source address
- var $newsrc; //New picture path (after localization)
- var $allowtype=array(".gif",".jpg",".png",".jpeg"); //Allowed image types
- var $regif=0; //Whether to abbreviate GIF, if it is 0, it will not be processed
- var $keep=0; //Whether to keep the source file (1 means to keep, 0 means MD5)
- var $over =0; //Whether the existing picture can be overwritten, if it is 0, it cannot be overwritten
- var $dir; //Picture source directory
- var $newdir; //Processed directory
- 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,"."); //After the MD5 file name (for example: 3293okoe. gif)
- $md5file=$this->w."_".$this->h."_".$md5file; //Processed file name
- return $this->newdir."/". $md5file; //Save the source image and MD5 file name to a new directory
- }
-
- function Mini($src,$w,$h,$q=80) //Generate thumbnail Mini(picture address, width, height, quality)
- {
- $this->src=$src;
- $this->w=$w;
- $this->h=$h;
- if(strrchr($src," .")==".gif" && $this->regif==0) //Whether to process GIF images
- {
- return $this->src;
- }
- if($this->keep== 0) //Whether to retain the source file, not retained by default
- {
- $newsrc=$this->reNames($src); //Renamed file address
- }
- else //Keep the original name
- {
- $src= str_replace("\","/",$src);
- $newsrc=$this->newdir.strrchr($src,"/");
- }
- if(file_exists($newsrc) && $this-> ;over==0) //If it already exists, return the address directly
- {
- return $newsrc;
- }
- if(strstr($src,"http://") && !strstr($src,$_SERVER[' HTTP_HOST']))//If it is a network file, save it first
- {
- $src=$this->getimg($src);
- }
- $arr=getimagesize($src); //Get image attributes
- $ 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;
- }
-
- //Process thumbnails
- $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 "
";
- echo $image->reImg("images/m8920.jpg",75,75,80);
- echo "
";
- echo $image->getimg("./images/s/zht.jpg");
- ?>
-
复制代码
|