ホームページ >バックエンド開発 >PHPチュートリアル >PHP 画像アップロード クラス、ウォーターマークの追加とサムネイルの生成をサポート_PHP チュートリアル

PHP 画像アップロード クラス、ウォーターマークの追加とサムネイルの生成をサポート_PHP チュートリアル

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

ネットユーザーが作成した、ウォーターマークの追加とサムネイルの生成をサポートする PHP 画像アップロード クラスを共有しましょう。以下は、設定と取得できるいくつかの情報です (各設定情報にはデフォルト値があり、設定する必要はありません)。特に必要がない場合):

技術記事
コードは以下の通りです コードをコピー

/*----------------- ---------------------------------------------------- --------------- ---
*
*---------------------------- --------------------- ---------------------------- ----------
*/
class image_up{
//定義 基本パラメータ
private $uptype=array('image/jpg','image/jpeg','image/png','image /pjpeg','image/gif','image/bmp','image/x- png'); //アップロードファイルの種類
private $max_file_size=102400; //アップロードサイズ制限(単位:KB)
destination_folder="up/"; //アップロードファイルパス
private $watermark=1; // ウォーターマークを付けるかどうか
private //ウォーターマークの種類(1はテキスト、2は画像)
=1; 4 は右上隅、5 は中央); private $waterstring=null; // 固定の高さをプレビューします。 ++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++プライベート$ imgthu_folder = null;縮小は固定幅の高さに使用され、1 は柔軟な変更です
imgthu_width=200; //サムネイルの幅

private $imgthu_name=null; ****************************************** ******** ******************************************* ****
プライベート $ inputname="upfile"; //ファイルアップロードボックス名
//*************************** ******* ************************************************ ******************************
private $img_preview_display; //画像プレビュー表示
// ****** ************************************************ ********************************************* ***** *************
//ファイルのアップロード関連情報。1 はファイルが存在しないことを意味し、2 はタイプが一致しないことを意味し、3 はサイズ制限を超えたことを意味し、4 はアップロードが失敗したことを意味します、0 はアップロードが成功したことを意味します
private $file_up_info=null;
//++++++++++++++++++++++++++++++++++ ++++++++ ++++++++++++++++++++++++++++++++++++++ ++++++ ++++++++++++++++++++++
//アップロードされたファイルの基本情報を外部から取得可能
private $file_name / /クライアントファイルの元の名前
private $file_type; //ファイルの MIME タイプ
private $file_size //アップロードされたファイルのサイズ、単位/バイト
private $file_tmp_name; //保存された一時ファイル名
private $file_error; //ファイルアップロードに関するエラーコード

private $img_size; // 画像の長さと幅を取得します
private $file_basename // 拡張子付きのフルネームを取得します
private $filename; extension) Name)
private $destination; //価格問い合わせパスに名前を追加
//***************************** ****** ******************************************* ******* ********************************
public function __set($propety_name,$value){
$this->$ property_name=$value;
}
public function __get($property_name){
if(isset($this->>$property_name))
return($this->>$property_name);
else return(NULL);
}
//************************************** ******* ****************************************** ******** ******************
//ファイルアップロード関数を定義
public function up(){
//ファイルが存在するかを判定
if(!is_uploaded_file($_FILES[$this ->inputname]["tmp_name"])){
$this->file_up_info=1;
return;
}
//対応する基本パラメータを取得して割り当てます
$ upfile=$_FILES[$this->inputname ];
$this->file_name=$upfile["name"];
$this->file_type=$upfile["type"];
$this-> ;file_size=$upfile["size"];
$this->file_tmp_name=$upfile["tmp_name"];
$this->file_error=$upfile["error"];
// ファイルがあるかどうかを確認しますtypematches
if(!in_array($this-> ;file_type,$this->uptype)){
$this->file_up_info=2;
return;
}
//ファイルサイズが制限を超えているかどうかを確認する
if($this->file_size>$this-> ;max_file_size){
$this->file_up_info=3;
return;
}
//ディレクトリが存在するかどうかを判断する
if(!file_exists($this- >destination_folder))
mkdir($this->destination_folder) ;
// さらに画像情報を取得し、値を代入します
$this->img_size=getimagesize($this->file_tmp_name);
$pathinfo= pathinfo($this->file_name);
$this->file_extension =$pathinfo["extension"]; // ファイル拡張子を取得します
$this->file_basename=$pathinfo["basename"]; //拡張子付きのフルネームを取得します
$this->filename=$pathinfo ["filename"]; // ファイル名(拡張子なし)
$filename2=$pathinfo['filename'];
$this->destination = $this->destination_folder.$this->filename. ".".$this->file_extension;
//ファイル名が存在するかどうかを判断し、存在する場合は名前を変更します
$n=1;
while ( file_exists($this->destination)){
while (file_exists( $this->destination)){
$n++;
$this->filename=$this->filename."(".$n .")";
$this->destination = $this- >destination_folder.$this->filename.".".$this->file_extension;
}
$this->filename=$filename2 ."(".$n.")";
$this->destination = $this->destination_folder.$this->filename.".".$this->file_extension;
}
//アップロードされたファイルを移動します
if(move_uploaded_file($this->file_tmp_name, $this->destination))
$this->file_up_info=0;
else $this->file_up_info=4;

//Add Watermark
if($this->watermark==1){
$this->imgthu();
}
//サムネイル画像を生成
if($this->imgthu==1){
$this ->add_watermark();
}
//プレビュー画像を生成
if($this->imgpreviewsize == 0){
if($this->img_size["0"]<$this-> imgwidth) $this->imgwidth=$this->img_size ["0"];
   if($this->img_size["1"]imgheight) $this->imgheight=$this->img_size["1"];
}else{
$this-> ;imgwidth=$this->img_size["0"]*$this->imgpreviewsize;
$this->imgheight=$this->img_size["1"]*$this->imgpreviewsize;
}
$this->img_preview_display=" alt="图片预览: r文件名":$this->file_tmp_name />";
}
//============================ ================================================= =====================================
//========== ================================================= ================================================= ======
// 略缩图機能
function imgthu(){
if($this->imgthu_folder==null)
$this->imgthu_folder=$this->destination_folder;

//$this->imgthu_name=$this->filename."_t.".$this->file_extension;
$imgthu_name_b=$this->filename."_t";
$imgthu_name_b2=$this- >filename."_t";
$destination_b=$this->imgthu_folder.$imgthu_name_b.".".$this->file_extension;
// 文件名が存在するかどうか、結果が存在する場合は重命名
$n =1;
while (file_exists($destination_b)){
while (file_exists($destination_b)){
$n++;
$imgthu_name_b=$imgthu_name_b."(".$n.")";
$destination_b = $ this->imgthu_folder.$imgthu_name_b.".".$this->file_extension;
}
$imgthu_name_b=$imgthu_name_b2."(".$n.")";
$destination_b = $this->imgthu_folder .$imgthu_name_b.".".$this->file_extension;
}


$imginfo=getimagesize($this->destination);
switch($imginfo[2])
{
case 1:
$ in=@imagecreatefromgif($this->destination);
break;
ケース 2:
$in=@imagecreatefromjpeg($this->destination);
break;
case 3:
$in=@imagecreatefrompng($ this->destination);
break;
case 6:
$in =@imagecreatefrombmp($this->destination);
break;
default:
break;
}
//计算略缩图长宽
if($this->imgthu_fixed==0){
if($this->imgthu_height>($imginfo[1]/$imginfo[0])*$this->imgthu_width)
$this->gt; imgthu_width = ($imginfo[0]/$imginfo[1])*$this->imgthu_height;
else
$this->imgthu_height=($imginfo[1]/$imginfo[0])*$this- >imgthu_width;
}
$new = imageCreateTrueColor($this->imgthu_width,$this->imgthu_height);
ImageCopyResize($new,$in,0,0,0,0,$this->imgthu_width ,$this->imgthu_height,$imginfo[0],$imginfo[1]);
switch ($imginfo[2])
{
case 1:
imagejpeg($new,$destination_b);
break;
ケース 2:
imagejpeg($new,$destination_b);
break;
ケース 3:
imagepng($new,$destination_b);
break;
ケース 6:
imagewbmp($new,$destination_b);
休憩。
}
}
//========================================== ================================================= =======================
//======================== ================================================= ==========================================
//追加水印機能
機能add_watermark(){
//1 = GIF、2 = JPG、3 = PNG、4 = SWF、5 = PSD、6 = BMP、7 = TIFF (インテル バイト オーダー)、
//8 = TIFF (モトローラ バイト オーダー)、9 = JPC 、10 = JP2、11 = JPX、12 = JB2、13 = SWC、14 = IFF、15 = WBMP、16 = XBM。
$imginfo=getimagesize($this->destination);
$im=imagecreatetruecolor($this->img_size[0],$this->img_size[1]); //トゥルーカラーを作成します
$white= ImageColoraLocate ($ im, 255,255,255); // カラーを設定します
$ Black = ImageColoraCate ($ im, 0,0,0) I // 画像のカラー color を使用して、座標 x と y で領域を塗りつぶします (画像の左上隅は 0, 0) (つまり、x 点と y 点と同じ色の点と隣接する点が塗りつぶされます)。
imagefill($im,0,0,$white);

switch($imginfo[2])

{

case 1:
$simage =imagecreatefromgif($this->destination); // 新しいものを作成しますファイルまたは URL からの画像
ブレーク;
ケース 2:
$simage =imagecreatefromjpeg($this->destination);
ブレーク;
ケース 3:
$simage =imagecreatefrompng($this->destination);
ブレーク;
ケース 6:
$simage =imagecreatefromwbmp($this->destination);
Break;
デフォルト:
echo ("サポートされていないファイル タイプ");
Break;
}
if(!empty($simage ))
{
//位置設定
if($this->watertype==1){
$str_len=strlen($this->waterstring);
$str_width=$str_len*10;
$str_height= 20;
}elseif($this->watertype==1 && file_exists($this->waterimg)){
$iinfo=getimagesize($this->waterimg);
$str_width = $iinfo[0] ;
$str_height = $iinfo[1];
}

switch ($this->waterposition){
case 1:
$p_x=5;
$p_y=$this->img_size[1]-$ str_height;
ブレーク;
ケース 2:
$p_x=$this->img_size[0]-$str_width;
$p_y=$this->img_size[1]-$str_height;
ケース 3:
$p_x=5 ;
$p_y=0;
ブレーク;
ケース 4:
$p_x=$this->img_size[0]-$str_width;
$p_y=5;
ブレーク;
ケース 5:
$p_x=($ this->img_size[0]-$str_width)/2;
$p_y=($this->img_size[1]-$str_height)/2;
Break;
}
imagecopy($ im,$simage, 0,0,0,0,$this->img_size[0],$this->img_size[1]); //画像の一部をコピー
//imagefilledrectangle($im,1, $this->) ;img_size[1]-15,130,$this->img_size[1],$white); //画像の閉じた長方形の領域に色を付ける

switch($this->watertype)
{

case 1 : //ウォーターマーク文字列を追加します

use using using using using through out through out through out through through through through ' s to ‐ to ‐‐‐‐‐‐ and ($this->waterimg);
Imagecopy($ im,$simage1,0,0,0,0,85,15);
imagedestroy($simage1);
ブレーク;
}

switch ($imginfo[2])
{
case 1:
//imagegif($nimage, $destination);
imagejpeg($im, $this->destination);
Break;
case 2:
imagejpeg ($im, $this->destination);
ブレーク;
ケース 3:
imagepng($im, $this->destination);
ブレーク;
ケース 6:
imagewbmp($im, $this-> );



http://www.bkjia.com/PHPjc/444727.html

www.bkjia.com

本当

http://www.bkjia.com/PHPjc/444727.html
透かしの追加とサムネイルの生成をサポートする、ネチズンによって作成された PHP 画像アップロード クラスの共有。以下は、設定と取得できるいくつかの情報です (特別な設定がない場合、各設定情報にはデフォルト値があります)。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。