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字符转义相关函数小结(php下的转义字符串)
Apr 12 PHP
php array_intersect()函数使用代码
Jan 14 PHP
基于Snoopy的PHP近似完美获取网站编码的代码
Oct 23 PHP
PHP中ini_set和ini_get函数的用法小结
Feb 18 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
Nov 19 PHP
php对象和数组相互转换的方法
May 12 PHP
纯php生成随机密码
Oct 30 PHP
Yii列表定义与使用分页方法小结(3种方法)
Jul 15 PHP
php实现将HTML页面转换成word并且保存的方法
Oct 14 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
Mar 25 PHP
php实现的rc4加密解密类定义与用法示例
Aug 16 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
Jun 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
php 遍历数据表数据并列表横向排列的代码
2009/09/05 PHP
PHP实现取得HTTP请求的原文
2014/08/18 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
2015/02/14 PHP
JQuery 表单中textarea字数限制实现代码
2009/12/07 Javascript
最新28个很棒的jQuery 教程
2011/05/28 Javascript
关于Javascript 对象(object)的prototype
2014/05/09 Javascript
javascript记录文本框内文字个数检测文字个数变化
2014/10/14 Javascript
编写简单的jQuery提示插件
2014/12/21 Javascript
javascript面向对象之this关键词用法分析
2015/01/13 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
Js查找字符串中出现次数最多的字符及个数实例解析
2016/09/05 Javascript
浅谈js常用内置方法和对象
2016/09/24 Javascript
原生JS实现图片轮播切换效果
2016/12/15 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
基于jQuery实现简单人工智能聊天室
2017/02/10 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
Javascript中click与blur事件的顺序详析
2017/04/25 Javascript
基于 Bootstrap Datetimepicker 联动
2017/08/03 Javascript
浅析vue中常见循环遍历指令的使用 v-for
2018/04/18 Javascript
React中嵌套组件与被嵌套组件的通信过程
2018/07/11 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
2018/12/04 jQuery
vue.js的双向数据绑定Object.defineProperty方法的神奇之处
2019/01/18 Javascript
vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)
2020/02/25 Javascript
快速解决element的autofocus失效问题
2020/09/08 Javascript
Javascript中的奇葩知识,你知道吗?
2021/01/25 Javascript
python发布模块的步骤分享
2014/02/21 Python
从零学python系列之从文件读取和保存数据
2014/05/23 Python
Python从MP3文件获取id3的方法
2015/06/15 Python
快速了解python leveldb
2018/01/18 Python
python保留小数位的三种实现方法
2020/01/07 Python
通过实例简单了解python yield使用方法
2020/08/06 Python
罗技英国官方网站:Logitech UK
2020/11/03 全球购物
学生会竞聘书范文
2014/03/31 职场文书
机关作风建设自查报告
2014/10/22 职场文书
幼儿园综治宣传月活动总结
2015/05/07 职场文书
反邪教学习心得体会
2016/01/15 职场文书