1 將圖片進行浮水印添加
2產生一個新的縮率圖
-
class Image{
- //水印配置項
- private $waterOn;
- private $waterImg ;
- private $waterPos;
- private $waterPct;
- private $waterText;
- private $waterFont;
- private $waterTextSize; private $private;
- //縮圖配置項目
- private $thumbWidth;
- private $thumbHeight;
- private $thumbType;
- private $ (){
- $this->waterOn=C("WATER_ON");
- $this->waterImg=C("WATER_IMG");
- $this->waterPos=C("WATER_POS") ;
- $this->waterPct=C("WATER_PCT");
- $this->waterText=C("WATER_TEXT");
- $this->waterFont=C("WATER_FONT");
- $this->waterTextSize=C("WATER_TEXT_SIZE");
- $this->waterTextColor=C("WATER_TEXT_COLOR");
- $this->qua=C("WATER_QUA");
- //縮率圖
- $this->thumbWidth=C("THUMB_WIDTH");
- $this->thumbHeight=C("THUMB_HEIGHT");
- $this->thumbType=C("THUMB_TYPE ");
- $this->thumbEndFix=C("THUMB_ENDFIX");
- }
- /*
- *驗證圖片是否合法
- */
- private function check($img ){
- return is_file($img)&&getimagesize($img)&&extension_loaded("gd");
- }
- /*
- *縮率圖
- *@param string $img 原圖
- *@param string $outFile 縮率之後儲存的圖片
- *@param int $thumbWidth 縮率圖寬度
- *@param int $thumbHeight 縮率圖高度
- *@param int $thumbType那種方式進行縮寫處理
- */
- public function thumb($img,$outFile="",$thumbWidth="",$thumbHeight="",$thumbType=""){
- if(!$this->check($img)){
- return false;
- }
- //縮率圖處理方式
- $thumbType=$thumbType?$thumbType:$this-> thumbType;
- //縮率圖寬度
- $thumbWidth=$thumbWidth?$thumbWidth:$this->thumbWidth;
- //縮率圖高度
- $thumbHeight=$thumbight; $this->thumbHeight;
- //取得原圖資訊
- $imgInfo=getimagesize($img);
- //原圖寬度
- $imgWidth=$imgInfo[0];
- //原圖高度
- $imgHeight=$imgInfo[1];
- //取得原圖型別
- $imgtype=image_type_to_extension($imgInfo[2]);
- //依不同的縮略處理方式,取得尺寸(原圖與縮圖對應的尺寸)
- $thumb_size=$this->thumbsize($imgWidth,$imgHeight,$thumbWidth,$thumbHeight,$thumbType);
- //建立原圖
- $func="imagecreatefrom".substr($imgtype,1);//變數函數
- $resImg=$func($img);
- //建立縮率圖畫布
- if($imgtype==".gif"){
- $res_thumb=imagecreate($thumb_size[2],$thumb_size[3]);
- }else{
- $res_thumb=imagecreatetruecolorcolor($thumb_size" 2],$thumb_size[3]);
- }
- imagecopyresized($res_thumb,$resImg,0,0,0,0,$thumb_size[2],$thumb_size[3],$thumb_size[0] ,$thumb_size[1]);
- $fileInfo=pathinfo($img);//檔案資訊
- $outFile=$outFile?$outFile:$fileInfo['filename'].$this->thumbEndFix. $fileInfo['extension'];//檔案名稱
- $outFile=$fileInfo["dirname"]."/".$outFile;//加上目錄
- $func="image".substr( $imgtype,1);
- $func($res_thumb,$outFile);
- return $outFile;
- }
- private function thumbSize($imgWidth,$imgHeight,$thumbWidth,$thumbHeight,$thumbType){
- //縮率圖尺寸
- $w=$thumbWidth; //原圖尺寸
- $img_w=$imgWidth;
- $img_h=$imgHeight;
- switch($thumbType){
- case 1:
- //寬度固定,高度自增
- $h=$w/$imgWidth*$imgHeight;
- break;
- case 2://高度固定,寬度自
- $w=$h/$imgHeight*$imgWidth;
- break;
- case 3:
- if($imgHeight/$thumbHeight>$imgWidth/$thumbWidth){
- $img_h=$imgWidth/$thumbWidth){
- $img_h=$imgWidth/$thumbWidth*aidight;
- $img_w=$imgHeight/$thumbHeight*$thumbWidth;
- }
- }
- return array($img_w,$img_h,$w,$h);
- }
- }
- / *
- *@param string $img 原圖
- *@param string $outImg 加完浮水印後產生的圖
- *@param int $pos 水印位置
- *@param int $pct 透明度
- *@param text $text 水印文字
- *@param string $waterImg浮水印圖片
- */
- public function water($img,$outImg=null,$pos="",$pct= "",$text="",$waterImg="",$textColor=""){
- if(!$this->check($img)){
- return false;
- }
- //加完浮水印後產生的圖
- $outImg=$outImg?$outImg:$img;
- //水印位置
- $pos=$pos?$pos:$this->waterPos ;
- //透明度
- $pct=$pct?$pct:$this->waterPct;
- //水印文字
- $text=$text?$text:$this->waterText;
- //浮水印圖片
- $waterImg=$waterImg?$waterImg:$this->waterImg;
- //驗證水印圖片
- $waterImgOn=$this->check($waterImg);
- //水印文字顏色
- $textColor=$textColor?$textColor:$this->waterTextColor;
- //原圖資訊
- $imgInfo=getimagesize($img);
- //原圖寬度
- $imgWidth=$imgInfo[0];
- //原圖高度
- $imgHeight=$imgInfo[1];
- switch($imgInfo[2]){
- case 1:
- $resImg=imagecreatefromgif($img);
- break;
- case 2:
- $resImg=imagecreatefromjpeg($img);
- break;
- case 3:34ase break; 🎜> $resImg=imagecreatefrompng($img);
- break;
- }
- if($waterImgOn){//水印圖片有效
- //水印資訊
- $waterInfo=getgetgesize($ waterImg);
- //浮水印寬度
- $waterWidth=$waterInfo[0];
- //浮水印高度
- $waterHeight=$waterInfo[1];
- //依不同的情況建立不同的類型gif jpeg png
- $w_img=null;
- switch($waterInfo[2]){
- case 1:
- $w_img=imagecreatefromgif($waterImg);
- $w_img=imagecreatefromgif($waterImg);
- break;
- case 2:
- $w_img=imagecreatefromjpeg($waterImg);
- break;
- case 3:
- $w_img=imagecreatefrompng($waterImg); {//浮水印圖片失效,使用文字浮水印
- if(empty($text)||strlen($textColor)!==7){
- return false;
- }
- //取得文字水印盒子資訊
- $textInfo=imagettfbbox($this->waterTextSize,0,$this->waterFont,$text);
- //文字資訊寬度
- $textWidth=$textInfo[2]-$ textInfo[6];
- //文字資訊高度
- $textHeight=$textInfo[3]-$textInfo[7];
- }
- //浮水印位置
- $x=$y=20;
- switch($pos){
- case 1:
- break;
- case 2:
- $x= ($imgWidth-$waterWidth)/2;
- 中斷;
- 情況3:
- $y=$imgWidth-$waterWidth-10;
- 中斷;
- 狀況4:
- $ x=($imgHeight-$waterHeight)/2;
- 中斷;
- 情況5:
- $x=($imgWidth-$waterWidth)/2;
- $y=($imgHeight-$水高)/2;
- 中斷;
- 案例6:
- $x=$imgWidth-$waterWidth-10;
- $y=($imgHeight-$waterHeight)/2;
- 中斷;
- 案例7:
- $x=$imgHeight-$waterHeight-10;
- 中斷;
- 情況8:
- $x=($imgWidth-$waterWidth)/2;
- $y=$ imgHeight-$waterHeight-10;
- 中斷;
- 情況9:
- $x=$imgWidth-$waterWidth-10;
- $y=$imgHeight-$waterHeight- 10;
- 中斷;
- 預設值:
- $x=mt_rand(20,$imgWidth-$waterWidth);
- $y=mt_rand(20,$imgHeight-$waterHeight);
- $y=mt_rand(20,$imgHeight-$waterHeight);
- }
- if($waterImgOn){//當水印圖片有效時,以圖片形式加水印
- if($waterInfo[2]==3){
- imagecopy($resImg,$ w_img,$ x,$y,0,0,$waterWidth,$waterHeight);
- }else{
- imagecopymerge($resImg,$w_img,$x,$y,0,0,$waterInfo,$ waterHeight,$ pct);
- }
- }else{//水印圖片無效,以文字浮水印加
- $red=hexdec(substr($this->waterTextColor,1,2));
- $greem =hexdec(substr($this->waterTextColor,3,2));
- $blue=hexdec(substr($this->waterTextColor,5,2));
- $color =imagecolorallocate($resImg, $red,$green,$blue);
- imagettftext($resImg,$this->waterTextSize,0,$x,$y,$color,$this->waterFont,$ text);
- }
- // 輸出圖片
- switch($imgInfo[2]){
- case 1:
- imagegif($resImg,$outImg);
- ;
- 狀況2:
- imagejpeg($resImg,$outImg);
- 中斷;
- 情況3:
- imagepng($resImg,$outImg);
- 中斷;
- }
- // 垃圾回收> 垃圾回收量> if(isset($resImg)){
- imagedestroy($resImg);
- }
- if(isset($w_img)){
- imagedestroy($w_img);
- }
- 回傳true;
- }
- }
- ?>
複製程式碼
-
return array(
- //水印處理
- "WATER_ON"=>1,//水印開關
- "WATERIMG "=>"./data/logo.png",//浮水印圖片
- "WATER_POS"=>9,//水印位置
- "WATER_PCT"=>80,//水印圖案
- "WATER_TEXT "=>"http://www.caoxiaobin.cn",
- "WATER_FONT"=>"./data/simsunb.ttf",//水印字體
- "WATER_TEXT_COLOR" =>"#333333", //文字顏色16睡眠表示
- "WATER_TEXT_SIZE"=>16,//文字大小
- "WATER_QUA"=>80,//圖片壓縮比
- //最小
- "THUMB_WIDTH"=> 150,//縮率圖寬度
- "THUMB_HEIGHT"=>150,//最小高度
- "THUMB_TYPE"=>1,//處理每小時1 寬度固定,高度自增2 高度固定,寬度自增// 每小時尺寸,將原圖裁切
- "THUMB_ENDFIX"=>"_thmub"//每小時後綴
-
- );
- ?>
複製程式碼
- /*
- * 不區分大小寫的資料鍵偵測
- */
- function array_key_exists_d($key,$arr){
- $_key=strtolower($key);
- foreach ($arr as $k=>$v){
- if($_key==strtolower($k)){
- return true;
- }
- }
- }
- /*
- * 遞歸更改陣列的KEY(鍵名)
- * @param array;
- * @stat int 0小寫1大寫
- * /
- function array_change_key_case_d($arr,$stat=0){
- $func=$stat?"strtoupper":"strtolower";
- $_newArr=array();
- if(!is_array ($arr)||empty($arr)){
- return $_newArr;
- }
- foreach($arr as $k=>$v){
- $_k=$func($ k);//透過變數函數轉換KEY大小寫
- $_newArr[$_k]= is_array($v)?array_change_key_case_d($v):$v;
- }
- return $_newArr;
- }
- /*
- * 讀取與設定設定項
- * @param $name void 設定項名稱,如果不填入傳回所有設定項
- * @param $value void 設定項的值
- * @param $value 值false null 只取$name值
- */
- function C($name=null,$value=null){
- static $config=array();/ /靜態變數$config儲存所有設定項
- if(is_null($name)){
- return $config;
- }
- //如果$name為陣列
- if(is_array($ name)){
- return $config=array_merge($config,array_change_key_case_d($name,1));
- }
- //$name為字串2種情況$value無值表示取得設定項的值,有值表示更改配置項
- if(is_string($name)){
- $name= strtoupper($name);
- //取得設定項的值
- if(is_null( $value)){
- return array_key_exists_d($name,$config)?$config[$name]:null;
- }else{
- //設定值
- $config[$name]= $value;
- return true;
- }
- }
- }
複製程式碼
|