ThinkPHP
发布时间:2022-04-09 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ThinkPHP打水印及设置水印位置的方法,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
本文实例讲述了Thinkphp打水印及设置水印位置的方法。分享给大家供大家参考,具体如下:
最近在用Thinkphp的打水印的功能,发现只能打在左下角。 php打水印功还是很容易的,最要是用到
ymerge (
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 的位置上。两图像将根据 pct 来决定合并程度,其值范围从 0 到 100。当 pct = 0 时,实际上什么也没做,当为 100 时对于调色板图像本函数和 imagecopy() 完全一样,它对真彩色图像实现了 alpha 透明。
水印demo图:
我需要把水印打到图片的真中间,查看Thinkphp代码。发现,作者居然是写死了,我只能做一个修改
php;">
/
**
* 为图片添加水印
* @static public
* @param
String $
source 原文件名
* @param
String $water 水印图片
* @param
String $$sav
ename 添加水印后的图片名
* @param
String $postion 水印的具体位置 leftbottom rightbottom lefttop righttop center <新增>
* @param
String $alpha 水印的透明度
* @return void
*/
static public function water($
source,$water,$sav
ename=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); //设定图像的混色模式 imagealphablending($wImage,true); //图像位置,默认为右下角右对齐 $posArr = $this->WaterPostion($postion,$sInfo,$wInfo
); //新增
//生成混合图像
imagecop
ymerge($sImage,$wImage,$posArr
[0],$posArr[1],$wInfo['width'],$wInfo['height'],$alpha
);
//输出图像
$ImageFun = 'Image' . $sInfo['type'];
//如果没有给出保存文件名,
默认为原图像名
if (!$save
Name) {
$sav
ename = $
source;
@unlink($
sourcE);
}
//保存图像
$ImageFun($sImage,$save
Name);
imagedestroy($sImag
E);
}
private function WaterPostion($postion,$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;
}
}
更多关于thinkphp相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》及《php模板技术总结》。
希望本文所述对大家基于Thinkphp框架的php程序设计有所帮助。
大佬总结
以上是大佬教程为你收集整理的ThinkPHP打水印及设置水印位置的方法全部内容,希望文章能够帮你解决ThinkPHP打水印及设置水印位置的方法所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。