php上傳圖片加水印(圖片水印,文字水印) 這是一款比較完整理的在用戶上傳圖片時就自動給圖片增加上水印,這款增加水印功能可以增加文字水印與圖片水印哦。
php教程上傳圖片加水印(圖片水印,文字水印)
這是一款比較完整理的在用戶上傳圖片時就自動給圖片增加上水印,這款增加水印功能可以增加文字水印與圖片水印哦。
/*
* created on 2010-6-21
*
* the class for control image
*
* made by s71ence
*
* @$img_path 圖片路徑
* @$is_auto_reduce 圖片是否自動按照大小等級壓縮 1是
* @$is_appoint 是否手動進行壓縮或放大 1是
* @$multiple 手動指定壓縮/放大比例
* @$is_water_str 是否加水印文字 1是
* @$water_str 水印文字
* @$is_watermark 是否加水印圖片 1是
* @$logo_path 水印圖片路徑
* @$is_display 是否顯示圖片 1是
* @$is_create 是否生成壓縮後的圖片 1是
*
* 注:
* 1.生成新圖時不可顯示圖片,即$isdisplay和$iscreate不可同時置為1
* 2.當圖片寬或高小於1000時,需手動設置壓縮比例進行壓縮
* 3.不建議啟用水印,若要啟用,建議原圖片大小最好在1000以內
* 4.水印文字中不可含有中文
* 5.新生成的圖片在原目錄文件中,支持n個層級
*/class image_control
{
private $img_path;
private $is_auto_reduce;
private $is_appoint;
private $multiple;
private $is_water_str;
private $water_str;
private $is_watermark;
private $logo_path;
private $is_display;
private $is_create;function __construct($img_path,$is_auto_reduce,$is_appoint,$multiple,$is_water_str,$water_str,$is_watermark,$logo_path,$is_display,$is_create)
{
$this->img_path=$img_path;
$this->is_auto_reduce=$is_auto_reduce;
$this->is_appoint=$is_appoint;
$this->multiple=$multiple;
$this->is_water_str=$is_water_str;
$this->water_str=$water_str;
$this->is_watermark=$is_watermark;
$this->logo_path=$logo_path;
$this->is_display=$is_display;
$this->is_create=$is_create;
}function img_control()
{
//獲取原圖
$img_info=getimagesize($this->img_path);switch($img_info[2])
{
case 1:
$img_get=@imagecreatefromgif($this->img_path);
break;case 2:
$img_get=@imagecreatefromjpeg($this->img_path);
break;case 3:
$img_get=@imagecreatefrompng($this->img_path);
break;
}//文字水印
if($this->is_water_str==1)
{
//imagettftext(原圖,文字大小,文字旋轉,水印起始坐標x,水印起始坐標y,$te,'simhei.ttf',$str);
$te=imagecolorallocate($img_get,255,255,255);
$str=iconv("gbk","utf-8",$this->water_str);//水印文字
imagettftext($img_get,16,0,$img_info[0]-200,$img_info[1]-20,$te,'msyh.ttf',$str);
}//圖片水印
if($this->is_watermark==1)
{
//水印圖片處理
$logo_info=getimagesize($this->logo_path);switch($logo_info[2])
{
case 1:
$logo=@imagecreatefromgif($this->logo_path);
break;case 2:
$logo=@imagecreatefromjpeg($this->logo_path);
break;case 3:
$logo=@imagecreatefrompng($this->logo_path);
break;
}//水印logo圖片
//函數說明:imagecopy(原圖,水印圖片,水印坐標x,水印坐標y,水印圖片開始坐標x,水印圖片開始坐標y,'水印圖片寬','水印圖片高');
imagecopy($img_get,$logo,0,0,0,0,$logo_info[0],$logo_info[1]);
}//自動圖片壓縮 按圖片大小分級自動壓縮
//imagecopyresized(畫布,原圖,畫布起始x坐標,畫布起始y坐標,原圖起始x坐標,原圖起始x坐標,新圖片寬,新圖片高,原圖片寬,原圖片高);
if($this->is_auto_reduce==1)
{
if($img_info[0]>=3000 || $img_info[1]>=3000)
{
$new_image_get=imagecreatetruecolor($img_info[0]*0.03,$img_info[1]*0.03);//生成畫布
imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.03,$img_info[1]*0.03,$img_info[0],$img_info[1]);
}
else if($img_info[0]>=2500 || $img_info[1]>=2500)
{
$new_image_get=imagecreatetruecolor($img_info[0]*0.04,$img_info[1]*0.04);
imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.04,$img_info[1]*0.04,$img_info[0],$img_info[1]);
}
else if($img_info[0]>=2000 || $img_info[1]>=2000)
{
$new_image_get=imagecreatetruecolor($img_info[0]*0.05,$img_info[1]*0.05);
imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.05,$img_info[1]*0.05,$img_info[0],$img_info[1]);
}
else if($img_info[0]>=1500 || $img_info[1]>=1500)
{
$new_image_get=imagecreatetruecolor($img_info[0]*0.08,$img_info[1]*0.08);
imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.08,$img_info[1]*0.08,$img_info[0],$img_info[1]);
}
else if($img_info[0]>=1000 || $img_info[1]>=1000)
{
$new_image_get=imagecreatetruecolor($img_info[0]*0.1,$img_info[1]*0.1);
imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.1,$img_info[1]*0.1,$img_info[0],$img_info[1]);
}
else if($img_info[0]>=500 || $img_info[1]>=500)
{
$new_image_get=imagecreatetruecolor($img_info[0]*0.2,$img_info[1]*0.2);
imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.2,$img_info[1]*0.2,$img_info[0],$img_info[1]);
}
else if($img_info[0]>=300 || $img_info[1]>=300)
{
$new_image_get=imagecreatetruecolor($img_info[0]*0.3,$img_info[1]*0.3);
imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.3,$img_info[1]*0.3,$img_info[0],$img_info[1]);
}
else
{
$new_image_get=imagecreatetruecolor($img_info[0]*1,$img_info[1]*1);
imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*1,$img_info[1]*1,$img_info[0],$img_info[1]);
}
}//手動圖片壓縮
//imagecopyresized(畫布,原圖,畫布起始x坐標,畫布起始y坐標,原圖起始x坐標,原圖起始x坐標,新圖片寬,新圖片高,原圖片寬,原圖片高);
if($this->is_appoint)
{
$new_image_get=imagecreatetruecolor($img_info[0]*$this->multiple,$img_info[1]*$this->multiple);//生成畫布
imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*$this->multiple,$img_info[1]*$this->multiple,$img_info[0],$img_info[1]);
}//圖像輸出
if($this->is_display==1)
{
header("content-type: image/jpeg");
return imagejpeg($new_image_get);
}//新圖像生成
if($this->is_create==1)
{
$new_name=explode("/",$this->img_path);
$new_name_string="";for($i=0;$i<count($new_name)-1;$i++)
{
$new_name_string.=$new_name[$i]."/";
}$new_img_path=$new_name_string."new".$new_name[$i];
if(imagejpeg($new_image_get,$new_img_path) && imagejpeg($img_get,$this->img_path))
{
setcookie("img_new_path", $new_img_path);
//return "圖片生成成功!<br/>新圖:".$new_img_path."<br/>原圖:".$this->img_path;
}
else
{
return "圖片生成失敗,請檢查配置是否正確!";
}
}
}function __desctruct()
{
//clear
}
}
//調用方法
/* $img_path="../users/user_photo/t2.jpg"; //被操作的圖片路徑
$is_auto_reduce=1;//圖片是否自動按照大小等級壓縮 1是
$is_appoint=0;//是否手動進行壓縮 1是
$multiple=0.5;//手動指定壓縮比例
$is_water_str=0;//是否加水印文字
$water_str="www.bKjia.c0m";//水印文字
$is_watermark=0;//是否加水印圖片 1是
$logo_path="../image/logo_about.gif";//水印圖片路徑
$is_display=0;//是否顯示圖片 1是
$is_create=1;//是否生成壓縮後的圖片 1是
$img=new image_control($img_path,$is_auto_reduce,$is_appoint,$multiple,$is_water_str,$water_str,$is_watermark,$logo_path,$is_display,$is_create);
echo $img->img_control();*/