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 相关文章推荐
实现 win2003 下 mysql 数据库每天自动备份
Dec 06 PHP
php从右向左/从左向右截取字符串的实现方法
Nov 28 PHP
PHP逐行输出(ob_flush与flush的组合)
Feb 04 PHP
php输出xml格式字符串(用的这个)
Jul 12 PHP
解析coreseek for sphinx的使用
Jun 21 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
Jun 25 PHP
PHP实现JS中escape与unescape的方法
Jul 11 PHP
php求今天、昨天、明天时间戳的简单实现方法
Jul 28 PHP
php使用curl详细解析及问题汇总
Aug 11 PHP
PHP大文件分割上传 PHP分片上传
Aug 28 PHP
PHP实现的CURL非阻塞调用类
Jul 26 PHP
yii2 上传图片的示例代码
Nov 02 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
YB217、YB235、YB400浅听
2021/03/02 无线电
PHP实现通用alert函数的方法
2015/03/11 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
2014/01/26 Javascript
单击和双击事件的冲突处理示例代码
2014/04/03 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
2014/12/08 Javascript
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
JavaScript构建自己的对象示例
2016/11/29 Javascript
基于Bootstrap分页的实例讲解(必看篇)
2017/07/04 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
WdatePicker.js时间日期插件的使用方法
2017/07/26 Javascript
vue better-scroll插件使用详解
2018/01/25 Javascript
jquery层次选择器的介绍
2019/01/18 jQuery
Vue Echarts实现可视化世界地图代码实例
2019/05/07 Javascript
VUE注册全局组件和局部组件过程解析
2019/10/10 Javascript
Vue组件化开发之通用型弹出框的实现
2020/02/28 Javascript
Python基础语法(Python基础知识点)
2016/02/28 Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
2016/03/21 Python
python将字典内容存入mysql实例代码
2018/01/18 Python
对Python字符串中的换行符和制表符介绍
2018/05/03 Python
Django实现支付宝付款和微信支付的示例代码
2018/07/25 Python
python单例模式实例解析
2018/08/28 Python
使用canvas生成含有微信头像的邀请海报没有微信头像问题
2019/10/29 HTML / CSS
印度尼西亚综合购物网站:Lazada印尼
2016/09/07 全球购物
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
深圳-东方伟业笔试部分
2015/02/11 面试题
《影子》教学反思
2014/02/21 职场文书
高级工程师英文求职信
2014/03/19 职场文书
社保委托书怎么写
2014/08/02 职场文书
社区助残日活动总结
2014/08/29 职场文书
中学生运动会新闻稿
2014/09/24 职场文书
毕业生自荐材料范文
2014/12/30 职场文书
2015年家长学校工作总结
2015/04/22 职场文书
《浅水洼里的小鱼》教学反思
2016/02/16 职场文书
六年级作文之家庭作文
2019/12/12 职场文书
CSS布局之浮动(float)和定位(position)属性的区别
2021/09/25 HTML / CSS