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 编写大型网站问题集
May 07 PHP
JpGraph php柱状图使用介绍
Aug 23 PHP
codeigniter教程之多文件上传使用示例
Feb 11 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
May 08 PHP
PHP采集类snoopy详细介绍(snoopy使用教程)
Jun 19 PHP
php单一接口的实现方法
Jun 20 PHP
Yii框架表单模型和验证用法
May 20 PHP
php连接mysql数据库
Mar 21 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
Jun 06 PHP
PHP读取并输出XML文件数据的简单实现方法
Dec 22 PHP
实例化php类时传参的方法分析
Jun 05 PHP
基于PHP+mysql实现新闻发布系统的开发
Aug 06 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
ThinkPHP行为扩展Behavior应用实例详解
2014/07/22 PHP
JavaScript中Math对象使用说明
2008/01/16 Javascript
javascript 避免闭包引发的问题
2009/03/17 Javascript
JavaScript中也使用$美元符号来代替document.getElementById
2010/06/19 Javascript
新鲜出炉的js tips提示效果
2011/04/03 Javascript
js jquery获取随机生成id的服务器控件的三种方法
2013/07/11 Javascript
js图片滚动效果时间可随意设定当鼠标移上去时停止
2014/06/26 Javascript
详解react-native-fs插件的使用以及遇到的坑
2017/09/12 Javascript
浅析为什么a=&quot;abc&quot; 不等于 a=new String(&quot;abc&quot;)
2017/10/25 Javascript
关于Angularjs中自定义指令一些有价值的细节和技巧小结
2018/04/22 Javascript
vue监听input标签的value值方法
2018/08/27 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
2018/10/30 Javascript
NodeJS实现同步的方法
2019/03/02 NodeJs
记录vue项目中遇到的一点小问题
2019/05/14 Javascript
Django模板继承 extend标签实例代码详解
2019/05/16 Javascript
vue学习之Vue-Router用法实例分析
2020/01/06 Javascript
nodejs脚本centos开机启动实操方法
2020/03/04 NodeJs
VUE+elementui组件在table-cell单元格中绘制微型echarts图
2020/04/20 Javascript
linux 下实现python多版本安装实践
2014/11/18 Python
Python中的Numeric包和Numarray包使用教程
2015/04/13 Python
Python之Numpy的超实用基础详细教程
2019/10/23 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
Django配置文件代码说明
2019/12/04 Python
python 实现单例模式的5种方法
2020/09/23 Python
python切割图片的示例
2020/11/12 Python
python爬虫线程池案例详解(梨视频短视频爬取)
2021/02/20 Python
机电一体化应届生求职信范文
2014/01/24 职场文书
给老婆大人的检讨书
2014/02/24 职场文书
美术毕业生求职信
2014/02/25 职场文书
班级学习雷锋活动总结
2014/07/04 职场文书
违反单位工作制度检讨书
2014/10/25 职场文书
婚前协议书范本
2014/10/27 职场文书
2015年敬老月活动总结
2015/03/27 职场文书
奖学金申请个人主要事迹材料
2015/11/04 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
mysql数据库隔离级别详解
2022/06/16 MySQL