1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > php图片平铺 ThinkPHP5实现图片水印平铺效果

php图片平铺 ThinkPHP5实现图片水印平铺效果

时间:2023-11-30 02:30:41

相关推荐

php图片平铺 ThinkPHP5实现图片水印平铺效果

我们有时需要对推片打上水印,防止别人盗用,thinkphp 自己的水印功能只能选择位置添加水印,但是有时候图片某些位置比较干净(空白部分),很容易处理掉,这样就无法起到防止盗用图片的效果。

这篇教程分享一下使用ThinkPHP5 实现图片水印平铺的效果。

关键代码操作

1、打开第三方类库文件:vendor\topthink\think-image\src\Image.php

2、把下面代码复制到上方地址的图片处理类库中(即增加一个图片处理方法)/**

*添加图片水印平铺

*

*@paramstring$source水印图片路径

*@paramint$alpha透明度

*@return$this

*/

publicfunctiontilewater($source,$alpha=100)

{

if(!is_file($source)){

thrownewImageException('水印图像不存在');

}

//获取水印图像信息

$info=getimagesize($source);

if(false===$info||(IMAGETYPE_GIF===$info[2]&&empty($info['bits']))){

thrownewImageException('非法水印文件');

}

//创建水印图像资源

$fun='imagecreatefrom'.image_type_to_extension($info[2],false);

$water=$fun($source);

//设定水印图像的混色模式

imagealphablending($water,true);

do{

//添加水印

$src=imagecreatetruecolor($info[0],$info[1]);

//调整默认颜色

$color=imagecolorallocate($src,255,255,255);

imagefill($src,0,0,$color);

//循环平铺水印

for($x=0;$xinfo['width']-10;$x){

for($y=0;$yinfo['height']-10;$y){

imagecopy($src,$this->im,0,0,$x,$y,$info[0],$info[1]);

imagecopy($src,$water,0,0,0,0,$info[0],$info[1]);

imagecopymerge($this->im,$src,$x,$y,0,0,$info[0],$info[1],$alpha);

$y+=$info[1];

}

$x+=$info[0];

}

//销毁临时图片资源

imagedestroy($src);

}while(!empty($this->gif)&&$this->gifNext());

//销毁水印资源

imagedestroy($water);

return$this;

}

使用方法:

注意:仅供参考,你可以改造到你的项目的上传图片部分!usethink\Image;

class....

publicfunctiontest(){

$image=Image::open('bg.jpg');

//给原图设置水印图片(colleced.png)并保存water_image.png(可以带路径)

$image->tilewater('colleced.png',100)->save('water_image.png');

echo"";

}

效果如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。