ThinkPHP打水印及設(shè)置水印位置的方法
本文實(shí)例講述了ThinkPHP打水印及設(shè)置水印位置的方法。分享給大家供大家參考,具體如下:
最近在用Thinkphp的打水印的功能,發(fā)現(xiàn)只能打在左下角。 PHP打水印功還是很容易的,最要是用到
將 src_im 圖像中坐標(biāo)從 src_x,src_y 開(kāi)始,寬度為 src_w,高度為 src_h 的一部分拷貝到 dst_im 圖像中坐標(biāo)為 dst_x 和 dst_y 的位置上。兩圖像將根據(jù) pct 來(lái)決定合并程度,其值范圍從 0 到 100。當(dāng) pct = 0 時(shí),實(shí)際上什么也沒(méi)做,當(dāng)為 100 時(shí)對(duì)于調(diào)色板圖像本函數(shù)和 imagecopy() 完全一樣,它對(duì)真彩色圖像實(shí)現(xiàn)了 alpha 透明。
水印demo圖:

我需要把水印打到圖片的真中間,查看Thinkphp代碼。發(fā)現(xiàn),作者居然是寫(xiě)死了,我只能做一個(gè)修改
/**
* 為圖片添加水印
* @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); //圖像位置,默認(rèn)為右下角右對(duì)齊 $posArr = $this->WaterPostion($postion,$sInfo,$wInfo); //新增
//生成混合圖像
imagecopymerge($sImage, $wImage, $posArr[0], $posArr[1], 0, 0, $wInfo['width'], $wInfo['height'], $alpha);
//輸出圖像
$ImageFun = 'Image' . $sInfo['type'];
//如果沒(méi)有給出保存文件名,默認(rèn)為原圖像名
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相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《ThinkPHP入門(mén)教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《smarty模板入門(mén)基礎(chǔ)教程》及《PHP模板技術(shù)總結(jié)》。
希望本文所述對(duì)大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。
- THINKPHP+JS實(shí)現(xiàn)縮放圖片式截圖的實(shí)現(xiàn)
- ThinkPHP水印功能實(shí)現(xiàn)修復(fù)PNG透明水印并增加JPEG圖片質(zhì)量可調(diào)整
- ThinkPHP做文字水印時(shí)提示call an undefined function exif_imagetype()解決方法
- thinkphp jquery實(shí)現(xiàn)圖片上傳和預(yù)覽效果
- ThinkPHP3.2.1圖片驗(yàn)證碼實(shí)現(xiàn)方法
- thinkphp3.2實(shí)現(xiàn)上傳圖片的控制器方法
- 使用ThinkPHP+Uploadify實(shí)現(xiàn)圖片上傳功能
- thinkphp實(shí)現(xiàn)圖片上傳功能分享
- 使用ThinkPHP自帶的Http類(lèi)下載遠(yuǎn)程圖片到本地的實(shí)現(xiàn)代碼
- thinkPHP框架實(shí)現(xiàn)圖像裁剪、縮放、加水印的方法
相關(guān)文章
set_exception_handler函數(shù)在ThinkPHP中的用法
這篇文章主要介紹了set_exception_handler函數(shù)在ThinkPHP中的用法,分析了官方給出了set_exception_handler函數(shù)用法說(shuō)明及示例,并講述了在ThinkPHP中的應(yīng)用實(shí)例,需要的朋友可以參考下2014-10-10
PHP模板引擎Smarty內(nèi)置變量調(diào)解器用法詳解
這篇文章主要介紹了PHP模板引擎Smarty內(nèi)置變量調(diào)解器用法,結(jié)合實(shí)例形式詳細(xì)分析了Smarty中的常用內(nèi)置變量調(diào)節(jié)器定義與使用技巧,需要的朋友可以參考下2016-04-04
eWebEditor v3.8 商業(yè)完整版 (PHP)
eWebEditor v3.8 商業(yè)完整版 (PHP)...2006-12-12
Thinkphp5.0 框架實(shí)現(xiàn)控制器向視圖view賦值及視圖view取值操作示例
這篇文章主要介紹了Thinkphp5.0 框架實(shí)現(xiàn)控制器向視圖view賦值及視圖view取值操作,結(jié)合實(shí)例形式分析了thinkPHP控制器向視圖傳值及從視圖取值相關(guān)操作技巧,需要的朋友可以參考下2019-10-10
php 網(wǎng)上商城促銷(xiāo)設(shè)計(jì)實(shí)例代碼
前一篇文章講的是購(gòu)物車(chē)的設(shè)計(jì),這篇來(lái)講下關(guān)于促銷(xiāo)的。支持的促銷(xiāo)類(lèi)似于,打折,買(mǎi)幾贈(zèng)幾,滿(mǎn)多少錢(qián)送禮品等等。用到策略模式2012-02-02
ThinkPHP模板中判斷volist循環(huán)的最后一條記錄的驗(yàn)證方法
這篇文章主要介紹了ThinkPHP模板中判斷volist循環(huán)的最后一條記錄的驗(yàn)證方法,需要的朋友可以參考下2014-07-07

