您现在的位置是:首页 > 正文

php加图片源码_php图片添加文字水印实现代码

2024-02-01 05:20:11阅读 2

/*PHP图片加文字水印类库

QQ:3697578482 伤心的歌

该类库暂时只支持文字水印,位置为右下角,颜色随机

调用方法:

1、在需要加水印的文件顶部引入类库:

include_once 'imageClass.php';

2、声明新类:

$tpl=new image_fu;

3、给图片水印提供参数:

$tpl->img(图片路径,水印文字,字体路径,字体大小,字体角度);

比如:$tpl->img('abc.jpg','这是水印文字','ziti.ttf',30,0)

*/

class image_fu{

private $image;

private $img_info;

private $img_width;

private $img_height;

private $img_im;

private $img_text;

private $img_ttf='';

private $img_new;

private $img_text_size;

private $img_jd;

function img($img='',$txt='',$ttf='',$size=12,$jiaodu=0){

if(isset($img)&&file_exists($img)){//检测图片是否存在

$this->image =$img;

$this->img_text=$txt;

$this->img_text_size=$size;

$this->img_jd=$jiaodu;

if(file_exists($ttf)){

$this->img_ttf=$ttf;

}else{

exit('字体文件:'.$ttf.'不存在!');

}

$this->imgyesno();

}else{

exit('图片文件:'.$img.'不存在');

}

}

private function imgyesno(){

$this->img_info =getimagesize($this->image);

$this->img_width =$this->img_info[0];//图片宽

$this->img_height=$this->img_info[1];//图片高

//检测图片类型

switch($this->img_info[2]){

case 1:$this->img_im = imagecreatefromgif($this->image);break;

case 2:$this->img_im = imagecreatefromjpeg($this->image);break;

case 3:$this->img_im = imagecreatefrompng($this->image);break;

default:exit('图片格式不支持水印');

}

$this->img_text();

}

private function img_text(){

imagealphablending($this->img_im,true);

//设定颜色

$color=imagecolorallocate($this->img_im,rand(0,255),rand(0,255),rand(0,255));

$txt_height=$this->img_text_size;

$txt_jiaodu=$this->img_jd;

$ttf_im=imagettfbbox($txt_height,$txt_jiaodu,$this->img_ttf,$this->img_text);

$w = $ttf_im[2] - $ttf_im[6];

$h = $ttf_im[3] - $ttf_im[7];

//$w = $ttf_im[7];

//$h = $ttf_im[8];

unset($ttf_im);

$txt_y =$this->img_height-$h;

$txt_x =$this->img_width-$w;

//$txt_y =0;

//$txt_x =0;

$this->img_new=@imagettftext($this->img_im,$txt_height,$txt_jiaodu,$txt_x,$txt_y,$color,$this->img_ttf,$this->img_text);

@unlink($this->image);//删除图片

switch($this->img_info[2]) {//取得背景图片的格式

case 1:imagegif($this->img_im,$this->image);break;

case 2:imagejpeg($this->img_im,$this->image);break;

case 3:imagepng($this->img_im,$this->image);break;

default: exit('水印图片失败');

}

}

//显示图片

function img_show(){echo ''.$this->img_text.'';}

//释放内存

private function img_nothing(){

unset($this->img_info);

imagedestroy($this->img_im);

}

}

?>

网站文章

  • 虚拟机服务器怎么安装驱动程序不正常怎么办,虚拟机安装不上虚拟网络驱动怎么处理...

    VMware安装网卡驱动的方法下载完成后,是一个iso文件,文件名为vmware-esx-drivers-net-igb_400.3.0.18-1vmw.2.17.249663.396986.iso,...

    2024-02-01 05:19:42
  • DM8创建表空间、创建用户、创建数据库对象

    DM8创建表空间、创建用户、创建数据库对象

    进入数据库安装路径 /tool 目录下,运行 ./manager 即可启动 DM 管理工具。

    2024-02-01 05:19:34
  • 搭建与配置网站公网服务器地址,搭建自己的dns域名解析服务器地址

    搭建与配置网站公网服务器地址,搭建自己的dns域名解析服务器地址

    搭建自己的dns域名解析服务器地址 内容精选换一换当您想在Internet上通过域名访问您的网站时,可以通过本操作将域名托管至华为云的云解析服务,并为域名添加解析记录。例如,搭建一个网站服务器,采用I...

    2024-02-01 05:19:28
  • 用这个算法能让大数据集群性能提升100倍!

    用这个算法能让大数据集群性能提升100倍!

    这篇文章给大家聊聊Hadoop在部署了大规模的集群场景下,大量客户端并发写数据的时候,文件契约监控算法的性能优化。

    2024-02-01 05:18:57
  • ip route静态路由命令详解_静态路由特性详解

    ip route静态路由命令详解_静态路由特性详解

    在配置和应用静态路由时,我们应当全面地了解静态路由的以下特点,否则你可能在遇到故障时总也想不通为什么:1、手动配置静态路由需要管理员根据实际需要进行手动配置,路由器不会自动生成所需的静态路由的。静态路...

    2024-02-01 05:18:51
  • 网络安全行业的未来在哪里?

    网络安全行业的未来在哪里?

    在第25届RSA大会上,我们看到,2016年将成为安全+机器学习+人工智能的爆发之年。 随着全球网络花费在2020年预计达到1700亿美元,无论是初创企业,还是老牌企业,都已经虎视眈眈地盯着这一块大蛋糕,意图抢得先机。此外,奥巴马最新批准了高达140美元的联邦网络预算,这样一来,Raytheon、Lockheed Martin、General Dynam...

    2024-02-01 05:18:43
  • 解决iPhone连接Mac反复断开重连

    之前看到网上帖子说,USB端口不要完全插入,只插入一半,实测有效,但不能保证100%解决。今天介绍另一种方法。终端执行下述命令,然后重新连接iPhone。// 关闭usbd服务,sudo操作需要输入锁屏密码sudo killall -STOP -c usbd如果不熟悉终端操作,可以打开系统自带工具“活动监视器”,找到usbd进程,强制退出,然后重新连接iPhone。...

    2024-02-01 05:18:38
  • 什么是主数据

    什么是主数据

    可以在企业内跨越各个业务部门被重复使用,和交易数据实时变化相比,主数据是处于相对高价值,高共享,相对稳定的状态,如产品、物资、设备、组织机构、员工、供应商、客户。2)主数据整合:主要利用数据清洗工具及...

    2024-02-01 05:18:09
  • Android学习笔记(47):使用Intent和IntentFilter进行通信

    Android中Activity、Service、BroadcastReceiver都是依靠Intent启动的,Intent封装了程序想要启动程序的意图,还可以用于与被启动组件交换信息。

    2024-02-01 05:18:01
  • 关于spring的问题处理(idea环境下)

    关于spring的问题处理(idea环境下)

    1、yml文件在导入jar包之后不变绿叶子配置文件的最终处理措施

    2024-02-01 05:17:52