ThinkPHP打水印及設(shè)置水印位置的方法
本文實例講述了ThinkPHP打水印及設(shè)置水印位置的方法。分享給大家供大家參考,具體如下:
最近在用Thinkphp的打水印的功能,發(fā)現(xiàn)只能打在左下角。 PHP打水印功還是很容易的,最要是用到
將 src_im 圖像中坐標(biāo)從 src_x,src_y 開始,寬度為 src_w,高度為 src_h 的一部分拷貝到 dst_im 圖像中坐標(biāo)為 dst_x 和 dst_y 的位置上。兩圖像將根據(jù) pct 來決定合并程度,其值范圍從 0 到 100。當(dāng) pct = 0 時,實際上什么也沒做,當(dāng)為 100 時對于調(diào)色板圖像本函數(shù)和 imagecopy() 完全一樣,它對真彩色圖像實現(xiàn)了 alpha 透明。
水印demo圖:
我需要把水印打到圖片的真中間,查看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相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《smarty模板入門基礎(chǔ)教程》及《PHP模板技術(shù)總結(jié)》。
希望本文所述對大家基于ThinkPHP框架的PHP程序設(shè)計有所幫助。
- THINKPHP+JS實現(xiàn)縮放圖片式截圖的實現(xiàn)
- ThinkPHP水印功能實現(xiàn)修復(fù)PNG透明水印并增加JPEG圖片質(zhì)量可調(diào)整
- ThinkPHP做文字水印時提示call an undefined function exif_imagetype()解決方法
- thinkphp jquery實現(xiàn)圖片上傳和預(yù)覽效果
- ThinkPHP3.2.1圖片驗證碼實現(xiàn)方法
- thinkphp3.2實現(xiàn)上傳圖片的控制器方法
- 使用ThinkPHP+Uploadify實現(xiàn)圖片上傳功能
- thinkphp實現(xiàn)圖片上傳功能分享
- 使用ThinkPHP自帶的Http類下載遠程圖片到本地的實現(xiàn)代碼
- thinkPHP框架實現(xiàn)圖像裁剪、縮放、加水印的方法
相關(guān)文章
64位windows系統(tǒng)下安裝Memcache緩存
這篇文章主要介紹了64位windows系統(tǒng)下安裝Memcache緩存的相關(guān)資料,需要的朋友可以參考下2015-12-12Vagrant(WSL)+PHPStorm+Xdebu 斷點調(diào)試環(huán)境搭建
這篇文章主要介紹了Vagrant(WSL)+PHPStorm+Xdebu 斷點調(diào)試環(huán)境搭建,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12php curl抓取網(wǎng)頁的介紹和推廣及使用CURL抓取淘寶頁面集成方法
抓取網(wǎng)頁內(nèi)容,分析網(wǎng)頁數(shù)據(jù)經(jīng)常使用php curl,簡潔易用,本篇文章通過代碼實例給大家講解 php curl抓取網(wǎng)頁的介紹和推廣及使用CURL抓取淘寶頁面集成方法,需要的朋友參考下2015-11-11PHP中的輸出echo、print、printf、sprintf、print_r和var_dump的示例代碼
這篇文章主要介紹了PHP中的輸出echo、print、printf、sprintf、print_r和var_dump的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12php設(shè)計模式之策略模式實例分析【星際爭霸游戲案例】
這篇文章主要介紹了php設(shè)計模式之策略模式,結(jié)合星際爭霸游戲案例形式分析了php策略模式相關(guān)原理、用法及操作注意事項,需要的朋友可以參考下2020-03-03關(guān)于Curl在Swoole協(xié)程中的解決方案詳析
這篇文章主要給大家介紹了關(guān)于Curl在Swoole協(xié)程中的解決方案,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Swoole具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Yii2框架數(shù)據(jù)庫簡單的增刪改查語法小結(jié)
這篇文章主要介紹了Yii2框架數(shù)據(jù)庫簡單的增刪改查語法小結(jié),非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-08-08