ホームページ  >  記事  >  バックエンド開発  >  PHP 画像アップロード クラス_PHP チュートリアル

PHP 画像アップロード クラス_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-20 11:06:18841ブラウズ

class Upload_class{
private $ptname; //アップロードフォーム名;
private $udname //月に基づいてサブディレクトリを作成するかどうか (0 はいいえ、その他は true);
private $ufname; // time ファイル名を作成します (0 はいいえ、その他は true);
private $ultype; //アップロード ファイル サイズ;
private $ulname; name;
private $ulpath; //出力ファイルパス;private $wm; //ウォーターマークの添付ファイル(0は追加なし、その他は追加);private $wmtype; //ウォーターマークの種類(0はテキスト、その他は画像) );
private $wmpic; //透かし画像;
private $wmpicquality; //画像透明;
private $wmstr; //透かし
文字
; /文字サイズ;
private $wmstrcolor; //文字色;
private $wmpos; //透かしの位置 (1 は左上、2 は上、3 は右上を意味します) .); function __construct($ptname='upfile',$udname=1,$ufname=1,$ultype=array('image/jpg','image/jpeg','image/png','image/ pjpeg','image/gif','image/bmp','image/x-png'),$wm=1,$wmtype=1,$wmpic='images/wm.gif',$ulsize=2097152, $ulpath='images/temp/',$wmpictrans=20,$wmpicquality=80,$wmstr='DONLINE',$wmstrsize=5,$wmstrfont='./font/cour.ttf',$wmstrcolor='# ff0000',$ wmpos=9){ $this->ptname=$_FILES[$ptname];
$this->udname=$udname;
$this->ufname=$ufname;
$this- >ultype= $ultype;
$this->ulsize=$ulsize;
$this->gt;ulpath=$ulpath;
$this->wm=$wm;
$this->wmtype=$wmtype ;
$this ->wmpic=$wmpic;
$this->wmpicquality=$wmpicquality;
$this->wmpictrans=$wmpictrans;
$this->wmstr=$wmstr;
$this-> ;wmstrsize=$ wmstrsize;
$this->wmstrfont=$wmstrfont;
$this->wmstrcolor=$wmstrcolor;
$this->wmpos=$wmpos;
}
function Uploadfun(){
if( $_SERVER[' REQUEST_METHOD']=='POST'){
if(!is_uploaded_file($this->ptname['tmp_name']))$this->errorfun('アップロードに失敗しました! ');
if(!in_array($this->ptname['type'],$this->ultype))$this->errorfun('サポートされていないファイル タイプ!');
if($ this- >ulsize<$this->ptname['size'])$this->errorfun('ファイルが大きすぎます!');
if($this->udname){date_default_timezone_set('UTC') ;$this->ulpath=$this->ulpath.'month_'.date('Ym').'/';}
else{$this->ulpath=$this->ulpath;}
$this->createfun($this->ulpath);
if($this->ufname){$t=pathinfo($this->ptname['name']);$this->ulname =$this->ulpath.time().'.'.$t['extension'];}
else{$this->ulname=$this->ulpath.$this->ptname[' name'];}
if(file_exists($this->ulname))$this->errorfun('ファイルはすでに存在します!');
if(!move_uploaded_file($this->ptname['tmp_name' ],$this->ulname))$this->errorfun('ファイルの移動エラー!');
$this->wmfun();
$this->errorfun('アップロード成功!');
}
}
function createfun($d){
if(!file_exists($d)){$this->createfun(dirname($d));mkdir($d);}
}
function wmfun( ){
if($this->wm){
if(file_exists($this->ulname)){
$groundimg=getimagesize($this->ulname);
$ow=$groundimg[0] ;
$oh=$groundimg[1];
switch($groundimg[2]){
case 1:$g=imagecreatefromgif($this->ulname);break;
case 2:$g=imagecreatefromjpeg($ this->ulname);break;
ケース 3:$g=imagecreatefrompng($this->ulname);break;
case 4:$g=imagecreatefromwbmp($this->ulname);break;
デフォルト: $this->errorfun('サポートされていない背景画像タイプです! ');
}
}
else{$this->errorfun('背景画像が存在しません!');}
   if(file_exists($this->wmpic)){
$wmimg=getimagesize($this->wmpic);
$ww=$wmimg[0];
$wh=$wmimg[1];
switch( $wmimg[2]){
ケース 1:$w=imagecreatefromgif($this->wmpic);break;
ケース 2:$w=imagecreatefromjpeg($this->wmpic);break;
ケース 3:$ w=imagecreatefrompng($this->wmpic);break;
case 4:$w=imagecreatefromwbmp($this->wmpic);break;
default:$this->errorfun('不サポートな水印图片型!');
}
}
else{$this->errorfun('水印图片無し!');}
switch($this->wmtype){
case 0:$tp=imagettfbbox(ceil( $this->wmstrsize*2.5),0,$this->wmstrfont,$this->wmstr);$ww=$tp[2]-$tp[6];$wh=$tp[3] -$tp[7];unset($tp);break;
case 1:$ww=$ww;$wh=$wh;break;
デフォルト:$ww=$ww;$wh=$wh;break;
}
if($ow<$ww || $oh<$wh)$this->errorfun('背景图片太小!無法生成水印!');
switch($this->wmpos){
case 0:$x=rand(0,($ow-$ww));$y=rand(0,($oh-$wh));break;//随机
case 1:$x=0;$ y=0;break;//1 は顶端居左
case 2:$x=($ow-$ww)/2;$y=0;break;//2 は顶端居中
case 3:$x=$ ow-$ww;$y=0;break;//3 は顶端居右
case 4:$x=0;$y=($oh-$wh)/2;break;//4 は中部居左
case 5:$x=($ow-$ww)/2;$y=($oh-$wh)/2;break;//5 は中部居中
case 6:$x=$ow-$ww; $y=($oh-$wh)/2;break;//6 は中部居右
case 7:$x=0;$y=$oh-$wh;break;//7 は底端居左
case 8:$x=($ow-$ww)/2;$y=$oh-$wh;break;//8 は底端居中
case 9:$x=$ow-$ww;$y= $oh-$wh;break;//9 は底端居右
デフォルト:$x=rand(0,($ow-$ww));$y=rand(0,($oh-$wh)) ;break;//随机
}
imagealphablending($g, true);
switch($this->wmtype){
case 0:
if($this->wmstrcolor){$R=hexdec(substr( $this->wmstrcolor,1,2));$G=hexdec(substr($this->wmstrcolor,3,2));$B=hexdec(substr($this->wmstrcolor,5)) ;}
else{$this->errorfun('水印文字颜色不存在!');}
imagestring($g,$this->wmstrfont,$x,$y,$this->wmstr,imagecolorallocate ($g,$R,$G,$B));break;
case 1;imagecopymerge($g,$w,$x,$y,0,0,$ww,$wh,$this-> wmpictrans);break;
default:imagecopymerge($g,$w,$x,$y,0,0,$ww,$wh,$this->wmpictrans);break;
}
@unlink($this ->ulname);
switch($groundimg[2]){
case 1:imagegif($g,$this->ulname);break;
case 2:imagejpeg($g,$this->ulname,$this->wmpicquality);break;
case 3:imagepng($g,$this->ulname);break;
case 4:imagewbmp($g,$this->ulname);break;
default:$this->errorfun('生成图片失败!');
}
if(isset($wmimg))unset( $wmimg);
if(isset($w))imagedestroy($w);
unset($groundimg);
imagedestroy($g);
}
}
function errorfun($e='不明错误!'){
$msg='';
echo $msg;
exit;
}
}
?>


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/445034.html技術記事 class Upload_class{ private $ptname; // アップロード フォーム名; private $udname // 月に基づいてサブディレクトリを作成するかどうか (0 はいいえ、その他は true); // ファイル名に基づいて作成するかどうか。時間通りに...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。