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


Posted in PHP onMarch 15, 2016

php类库给现有的图片加文字水印,代码不是很完善,欢迎大家多多指教!代码如下:

<?php
/*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 '<img src="'.$this->image.'" border="0" alt="'.$this->img_text.'" />';}
//释放内存
private function img_nothing(){
unset($this->img_info);
imagedestroy($this->img_im);
}
}
?>

以上就是本文的全部内容,希望对大家的学习有所帮助。

PHP 相关文章推荐
php smarty的预保留变量总结
Dec 04 PHP
在PHP中PDO解决中文乱码问题的一些补充
Sep 06 PHP
QQ登录 PHP OAuth示例代码
Jul 20 PHP
PHP高级对象构建 工厂模式的使用
Feb 05 PHP
PHP中运用jQuery的Ajax跨域调用实现代码
Feb 21 PHP
ThinkPHP实现一键清除缓存方法
Jun 26 PHP
codeigniter中实现一次性加载多个view的方法
Mar 20 PHP
图文介绍PHP添加Redis模块及连接
Jul 28 PHP
php实现的xml操作类
Jan 15 PHP
thinkphp验证码的实现(form、ajax实现验证)
Jul 28 PHP
解决在Laravel 中处理OPTIONS请求的问题
Oct 11 PHP
PHP优化之批量操作MySQL实例分析
Apr 23 PHP
PHP闭包函数传参及使用外部变量的方法
Mar 15 #PHP
Yii rules常用规则示例
Mar 15 #PHP
基于laravel制作APP接口(API)
Mar 15 #PHP
使用Composer安装Yii框架的方法
Mar 15 #PHP
Yii使用migrate命令执行sql语句的方法
Mar 15 #PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
Mar 15 #PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
Mar 14 #PHP
You might like
php PDO中文乱码解决办法
2009/07/20 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
php session劫持和防范的方法
2013/11/12 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
2014/08/22 PHP
给大家分享几个常用的PHP函数
2017/01/15 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
PHP数组实际占用内存大小原理解析
2020/12/11 PHP
在Windows上安装Node.js模块的方法
2011/09/25 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
jQuery插件StickUp实现网页导航置顶
2015/04/12 Javascript
Node.js中多进程模块Cluster的介绍与使用
2017/05/27 Javascript
微信小程序授权获取用户详细信息openid的实例详解
2017/09/20 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
浅谈Node异步编程的机制
2017/10/18 Javascript
基于axios封装fetch方法及调用实例
2018/02/05 Javascript
微信小程序实现留言板
2018/10/31 Javascript
IE8中jQuery.load()加载页面不显示的原因
2018/11/15 jQuery
vue-router实现嵌套路由的讲解
2019/01/19 Javascript
微信小程序拍照和摄像功能实现方法示例
2019/02/01 Javascript
js实现的格式化数字和金额功能简单示例
2019/07/30 Javascript
vue改变循环遍历后的数据实例
2019/11/07 Javascript
详解js location.href和window.open的几种用法和区别
2019/12/02 Javascript
Vue父子组件传值的一些坑
2020/09/16 Javascript
Python的装饰器用法学习笔记
2016/06/24 Python
Python守护线程用法实例
2017/06/23 Python
python 自定义异常和异常捕捉的方法
2018/10/18 Python
用python3 返回鼠标位置的实现方法(带界面)
2019/07/05 Python
matplotlib绘制多个子图(subplot)的方法
2019/12/03 Python
python代码实现TSNE降维数据可视化教程
2020/02/28 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
企业治理工作自我评价
2013/09/26 职场文书
汽车运用工程系毕业生自荐信
2013/12/27 职场文书
爱岗敬业演讲稿范文
2014/01/14 职场文书
使用 Docker Compose 构建复杂的多容器App
2022/04/30 Servers
如何利用python实现列表嵌套字典取值
2022/06/10 Python