- function mkdirs($dirname,$mode=0777) //ディレクトリ(ディレクトリ, [mode])を作成します
- {
- if(!is_dir( $ dirname))
- {
- mkdirs($dirname,$mode); // ディレクトリが存在しない場合は再帰的に作成します
- return mkdir($dirname,$mode);
- }
- return true;
- }
- function savefile($filename ,$content='') //ファイルを保存(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) // ファイル名の接尾辞を取得
- {
- return end (explode(".",$filename));
- }
- function checksuffix($filename,$arr) //許可された型かどうか (current, allowed)
- {
- 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 ? : "./images/temp";
- $this-> newdir=$newdir ? $newdir : "./images/s";
- }
- 関数 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)
- {
- ケース 1: //1 = GIF,
- $im= imagecreatefromgif($src);
- ブレーク;
- ケース 2: //2 = JPG
- $im=imagecreatefromjpeg($src) ;
- break;
- ケース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 {
- $width_a=$幅;
- $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
- {
- imagecopyresize( $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);
- ブレーク;
- ケース 3:
- $rs=imagepng($nim,$newsrc);
- ブレーク;
- デフォルト:
- 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/>gt;";
- echo $image->reImg("images/m8920.jpg",75,75,80);
- echo "
"; - echo $image->getimg( "./images/s/zht.jpg");
- ?>
-
复制牌
|