溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

ThinkPHP打水印及設(shè)置水印位置的示例分析

發(fā)布時間:2021-08-30 15:27:53 來源:億速云 閱讀:122 作者:小新 欄目:開發(fā)技術(shù)

這篇文章給大家分享的是有關(guān)ThinkPHP打水印及設(shè)置水印位置的示例分析的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

具體如下:

最近在用Thinkphp的打水印的功能,發(fā)現(xiàn)只能打在左下角。 PHP打水印功還是很容易的,最要是用到

bool imagecopymerge ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h , int $pct )

將 src_im 圖像中坐標從 src_x,src_y 開始,寬度為 src_w,高度為 src_h 的一部分拷貝到 dst_im 圖像中坐標為 dst_x 和 dst_y 的位置上。兩圖像將根據(jù) pct 來決定合并程度,其值范圍從 0 到 100。當 pct = 0 時,實際上什么也沒做,當為 100 時對于調(diào)色板圖像本函數(shù)和 imagecopy() 完全一樣,它對真彩色圖像實現(xiàn)了 alpha 透明。

水印demo圖:

ThinkPHP打水印及設(shè)置水印位置的示例分析

我需要把水印打到圖片的真中間,查看Thinkphp代碼。發(fā)現(xiàn),作者居然是寫死了,我只能做一個修改

/**
* 為圖片添加水印
* @static public
* @param string $source 原文件名
* @param string $water 水印圖片
* @param string $$savename 添加水印后的圖片名
* @param string $postion 水印的具體位置 leftbottom rightbottom lefttop righttop center <新增>
* @param string $alpha 水印的透明度
* @return void
*/
static public function water($source, $water, $savename=null,$postion="center", $alpha=80) {
//檢查文件是否存在
if (!file_exists($source) || !file_exists($water))
return false;
//圖片信息
$sInfo = self::getImageInfo($source);
$wInfo = self::getImageInfo($water);
//如果圖片小于水印圖片,不生成圖片
if ($sInfo["width"] < $wInfo["width"] || $sInfo['height'] < $wInfo['height']) return false; //建立圖像 $sCreateFun = "imagecreatefrom" . $sInfo['type']; $sImage = $sCreateFun($source); $wCreateFun = "imagecreatefrom" . $wInfo['type']; $wImage = $wCreateFun($water); //設(shè)定圖像的混色模式 imagealphablending($wImage, true); //圖像位置,默認為右下角右對齊 $posArr = $this->WaterPostion($postion,$sInfo,$wInfo); //新增
  //生成混合圖像
  imagecopymerge($sImage, $wImage, $posArr[0], $posArr[1], 0, 0, $wInfo['width'], $wInfo['height'], $alpha);
  //輸出圖像
  $ImageFun = 'Image' . $sInfo['type'];
 //如果沒有給出保存文件名,默認為原圖像名
 if (!$savename) {
   $savename = $source;
   @unlink($source);
  }
 //保存圖像
  $ImageFun($sImage, $savename);
   imagedestroy($sImage);
 }
 private function WaterPostion($postion,$sInfo,$wInfo)
 {
   $posY = $sInfo["height"] - $wInfo["height"];
   $posX = $sInfo["width"] - $wInfo["width"];
  switch($postion)
 {
   case "rightbottom":
    return array($posX,$posY);
   break;
   case "leftbottom":
    return array($wInfo["width"],$posY);
   break;
   case "lefttop":
    return array($wInfo["width"],$wInfo["height"]);
   break;
   case "righttop":
    return array($posX,$wInfo["height"]);
   break;
   case "center":
    return array($posX/2,$posY/2);
  break;
  }
}

感謝各位的閱讀!關(guān)于“ThinkPHP打水印及設(shè)置水印位置的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI