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 相关文章推荐
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
Mar 15 PHP
php类中private属性继承问题分析
Nov 01 PHP
php分页函数示例代码分享
Feb 24 PHP
destoon调用discuz论坛中带图片帖子的实现方法
Aug 21 PHP
PHP判断IP并转跳到相应城市分站的方法
Mar 25 PHP
PHP 获取ip地址代码汇总
Jul 05 PHP
php中ob函数缓冲机制深入理解
Aug 03 PHP
WordPress中用于创建以及获取侧边栏的PHP函数讲解
Dec 29 PHP
PHP命名空间和自动加载类
Apr 03 PHP
php 解决substr()截取中文字符乱码问题
Jul 18 PHP
thinkPHP框架实现多表查询的方法
Jun 14 PHP
php支付宝APP支付功能
Jul 29 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 引用是个坏习惯
2010/03/12 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
2015/03/12 PHP
JSON 学习之JSON in JavaScript详细使用说明
2010/02/23 Javascript
基于Jquery的表格隔行换色,移动换色,点击换色插件
2010/12/22 Javascript
javascript实现复选框选中属性
2015/03/25 Javascript
jquery实现多屏多图焦点图切换特效的方法
2015/05/04 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
2015/08/05 Javascript
iframe中子父类窗口调用JS的方法及注意事项
2015/08/25 Javascript
使用JavaScript和CSS实现文本隔行换色的方法
2015/11/04 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
2015/12/08 Javascript
学习JavaScript鼠标响应事件
2015/12/25 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
2016/11/22 Javascript
WEB开发之注册页面验证码倒计时代码的实现
2016/12/15 Javascript
JS正则表达式之非捕获分组用法实例分析
2016/12/28 Javascript
nodejs中模块定义实例详解
2017/03/18 NodeJs
d3.js入门教程之数据绑定详解
2017/04/28 Javascript
JS库之ParticlesJS使用简介
2017/09/12 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
js console.log打印对象时属性缺失的解决方法
2019/05/23 Javascript
Python警察与小偷的实现之一客户端与服务端通信实例
2014/10/09 Python
Python基于opencv实现的简单画板功能示例
2019/03/04 Python
Python OS模块实例详解
2019/04/15 Python
Pytorch 实现focal_loss 多类别和二分类示例
2020/01/14 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
2020/06/22 Python
如何整合JQuery和Prototype
2014/01/31 面试题
创意活动策划书
2014/01/15 职场文书
竞选学生会主席演讲稿
2014/04/24 职场文书
个性车贴标语
2014/06/24 职场文书
新闻编辑求职信
2014/07/13 职场文书
副校长个人对照检查材料思想汇报
2014/10/04 职场文书
就业协议书范本
2014/10/08 职场文书
车间主任岗位职责范本
2015/04/08 职场文书
催款函范文
2015/06/24 职场文书
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
2021/06/18 MySQL