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 相关文章推荐
使用session判断用户登录用户权限(超简单)
Jun 08 PHP
PHP判断远程图片或文件是否存在的实现代码
Feb 20 PHP
PHP根据两点间的经纬度计算距离
Oct 31 PHP
php使用CURL伪造IP和来源实例详解
Jan 15 PHP
PHP简单选择排序算法实例
Jan 26 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
Apr 17 PHP
php使用Imagick生成图片的方法
Jul 31 PHP
php cli配置文件问题分析
Oct 15 PHP
PHP中addcslashes与stripcslashes函数用法分析
Jan 07 PHP
PHP的全局错误处理详解
Apr 25 PHP
PHPStrom 新建FTP项目以及在线操作教程
Oct 16 PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 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
DC动画电影《黑暗正义联盟》曝预告 5月5日上线数字平台
2020/04/09 欧美动漫
仿AS3实现PHP 事件机制实现代码
2011/01/27 PHP
探讨捕获php错误信息方法的详解
2013/06/09 PHP
PHP设计模式之结构模式的深入解析
2013/06/13 PHP
PHP安全上传图片的方法
2015/03/21 PHP
PHP输出九九乘法表代码实例
2015/03/27 PHP
PHP编写的图片验证码类文件分享
2016/06/06 PHP
PHP中引用类型和值类型功能与用法示例
2019/02/26 PHP
无阻塞加载脚本分析[全]
2011/01/20 Javascript
JavaScript等比例缩放图片控制超出范围的图片
2013/08/06 Javascript
扩展JS Date对象时间格式化功能的小例子
2013/12/02 Javascript
iframe的onreadystatechange事件在firefox下的使用
2014/04/16 Javascript
jQuery中Ajax的get、post等方法详解
2015/01/20 Javascript
深入理解JavaScript中的箭头函数
2015/07/28 Javascript
jQuery简单实现上下,左右滑动的方法
2016/06/01 Javascript
分享jQuery网页元素拖拽插件
2020/12/01 Javascript
微信小程序 页面之间传参实例详解
2017/01/13 Javascript
Bootstrap的popover(弹出框)在append后弹不出(失效)
2017/02/27 Javascript
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
2019/05/01 Javascript
浅谈Vue3.0新版API之composition-api入坑指南
2020/04/30 Javascript
python itchat实现微信好友头像拼接图的示例代码
2017/08/14 Python
Python实现字符串与数组相互转换功能示例
2017/09/22 Python
Python中文分词库jieba,pkusegwg性能准确度比较
2020/02/11 Python
python 实现字符串下标的输出功能
2020/02/13 Python
HTML5之tabindex属性全面解析
2016/07/07 HTML / CSS
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
Sahajan美国:阿育吠陀护肤品牌
2021/01/09 全球购物
北京-环亚运商测试题.net程序员初步测试题
2013/05/28 面试题
请解释流与文件有什么不同
2016/07/29 面试题
盛大笔试题
2016/11/05 面试题
轻化专业学生实习自我鉴定
2013/09/20 职场文书
副总经理岗位职责
2014/03/16 职场文书
搞笑欢迎词大全
2015/09/30 职场文书
MySQL sql_mode的使用详解
2021/05/08 MySQL
MySQL 逻辑备份与恢复测试的相关总结
2021/05/14 MySQL