方法代码:

/**
 * 图片加水印(适用于png/jpg/gif格式)
 *
 * @author flynetcn
 *
 * @param $srcImg  原图片
 * @param $waterWord 水印文字
 * @param $savepath 保存路径
 * @param $savename 保存名字
 * @param $positon  水印位置
 *          1:顶部居左,角度-30度;2:居中,角度30度;3:居中,角度-30度;4:底部居左,角度30度;
* @param $size 字体大小
 * @param $alpha   透明度 -- 0:完全透明, 100:完全不透明
 *
 * @return 成功 -- 加水印后的新图片地址
 *   失败 -- -1:原文件不存在, -2:水印图片不存在, -3:原文件图像对象建立失败
 *       -4:水印文件图像对象建立失败 -5:加水印后的新图片保存失败
 */
function water_mark($srcImg, $waterWord, $savepath=null, $savename=null, $positon=3, $size=74, $color=null,$alpha=50){
//判断文件是否存在
$srcImgInfo = @getimagesize($srcImg);
if(!$srcImgInfo){
return -1;
} //建立图像对象
$srcImgObj = image_create_from_ext($srcImg, $srcImgInfo[2]);
if(!$srcImgObj){
return -3; //原文件图像对象建立失败
} //准备信息:保存路径,保存文件名
$temp = pathinfo($srcImg);
$name = $temp['basename'];
$path = $temp['dirname'];
$ext = $temp['extension'];
$color = $color ? $color : imagecolorallocate($srcImgObj, 255,250,250);
$savename = $savename ? $savename : $name;
$savepath = $savepath ? $savepath : $path;
$savefile = $savepath .'/'. $savename; //创建一个画布,并给其填充颜色,否则背景为黑色
$imgW = 500;
$imgH = $srcImgInfo[1]/($srcImgInfo[0]/500);
$imgObj = imagecreatetruecolor($imgW, $imgH);
$trans = imagecolorallocate($imgObj, 255, 255, 255);
imagefill($imgObj, 0, 0, $trans);
//缩小图片到画布
imagecopyresampled($imgObj, $srcImgObj, 0, 0, 0, 0, $imgW, $imgH, $srcImgInfo[0], $srcImgInfo[1]); //确定生成水印的位置
switch($positon){
//1顶部居左,角度-20度
case 1:
$x=$y=20;$angle = -20;
break;
//2居中,角度-20度
case 2:
$x = $imgW/7; $y = $imgH/3; $angle = -20;
break;
//3居中,角度20度
case 3:
$x = $imgW/7; $y = $imgH/1.5; $angle = 20;
break;
//4底部居左,角度20度
case 4:
$x = 20; $y = $imgH; $angle = 20;
break;
 default:
$x = $imgW/7; $y = $imgH/2; $angle = 20;
break;
} //添加水印图片
imagettftext($imgObj, $size, $angle, $x, $y, $color, './fonts/STXINWEI.TTF', $waterWord);
//输出图片
switch ($srcImgInfo[2]) {
case 1:
imagegif($imgObj, $savefile);
break;
case 2:
imagejpeg($imgObj, $savefile);
break;
case 3:
imagepng($imgObj, $savefile);
break;
default:
return -5; //保存失败
}
//销毁图像资源
imagedestroy($imgObj);
imagedestroy($srcImgObj);
return $savefile; }
/*
* 创建图像对象
* @param $imgFile 图片路径
* @param $imgExt 图片扩展名
* @return $im 图像对象
**/
function image_create_from_ext($imgFile, $imgExt){
$im = null;
switch ($imgExt) {
case 1:
$im=imagecreatefromgif($imgFile);
break;
case 2:
$im=imagecreatefromjpeg($imgFile);
break;
case 3:
$im=imagecreatefrompng($imgFile);
break;
}
return $im;
}

测试:

//调用方法测试
$res = water_mark('F:\test\test1.jpg', "金万维域名认证专用", null, 'res.jpg', 3, 36);
var_dump($res);

php对图片加水印--将文字作为水印加到图片的更多相关文章

  1. php文字水印和php图片水印实现代码(二种加水印方法)

    文字水印 文字水印就是在图片上加上文字,主要使用gd库的imagefttext方法,并且需要字体文件.效果图如下: $dst_path = 'dst.jpg';//创建图片的实例$dst = imag ...

  2. javacpp-opencv图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体、位置、大小、粗度、翻转、平滑等操作

    欢迎大家积极开心的加入讨论群 群号:371249677 (点击这里进群) javaCV图像处理系列: javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体.位置. ...

  3. 用java实现给图片增加图片水印或者文字水印(也支持视频图像帧添加水印)

    javaCV图像处理系列: javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体.位置.大小.粗度.翻转.平滑等操作 javaCV图像处理之2:实时视频添加图片水 ...

  4. Java给图片和PDF文件添加水印(图片水印和文字水印)

    有时候我们看到的图片或者PDF文件会自动加上水印.分为文字水印和图片水印. ----------------------------图片水印---------------------------- 1 ...

  5. Thinkphp图片水印和文字水印

    1.Thinkphp图像处理 在TP框架中,我们经常用到图片上传,我最近写了很多关于图片上传的文章,thinkphp图片上传+validate表单验证+图片木马检测+缩略图生成等文章,今天写一下关于图 ...

  6. 利用iTextSharp组件给PDF文档添加图片水印,文字水印

    最近在做关于PDF文档添加水印的功能,折腾了好久,终于好了.以下做个记录: 首先会用到iTextSharp组件,大家可以去官网下载,同时我也会在本文中附加进来. 代码中添加引用为:   using S ...

  7. PHP给图片加上图片水印和文字水印实例

    下面给大家分享一下PHP给图片加上图片水印和文字水印实例,这也是网站经常用到的功能,把代码加上去,调用就很简单了. 核心代码: function imageWaterMark($groundImage ...

  8. php-图片加水印和文字

    //************************** 图片加文字 ************************ $dst_path = '11.jpg';//创建图片的实例$dst = ima ...

  9. java常用开发工具类之 图片水印,文字水印,缩放,补白工具类

    import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...

随机推荐

  1. javaweb报错:java.lang.NumberFormatException: null

    报错环境: JSP向Severlet页面传值,当Serverlet页执行以下语句时,后台日志报错 int softType = Integer.parseInt(request.getParamete ...

  2. OI数学 简单学习笔记

    基本上只是整理了一下框架,具体的学习给出了个人认为比较好的博客的链接. PART1 数论部分 最大公约数 对于正整数x,y,最大的能同时整除它们的数称为最大公约数 常用的:\(lcm(x,y)=xy\ ...

  3. checkbox attr 和 prop ,onclick 事件,

    给checkbox 添加默认的勾选,尽量使用 checked=“checked”,不要使用checked=“true”. <td><input id="checkboxid ...

  4. javascript滚动到大于一定距离显示隐藏

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. Echart自定义y轴刻度信息2

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  6. 3、激活层(Activiation Layers)及参数

    caffe激活层(Activiation Layers) 在激活层中,对输入数据进行激活操作(实际上就是一种函数变换),是逐元素进行运算的.从bottom得到一个blob数据输入,运算后,从top输入 ...

  7. Android Fragment之间的通信(用fragment替换掉XML布局文件中的一个线性布局)

    1.XML布局 (1)主界面 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xml ...

  8. 多个tomcat一起运行

    1.默认为:8005 2.在D:\apache-tomcat-7.0.85\bin目录下,找到startup.bat,打开并修改. 3.在D:\apache-tomcat-7.0.85\bin目录下, ...

  9. POJ_2155 Matrix 【二维树状数组】

    一.题面 POJ2155 二.分析 楼教主出的题,是二维树状数组非常好的题,还结合了开关问题(开关变化的次数如果为偶数,状态不变,奇数状态相反). 题意就是给了一个二维的坐标平面,每个点初始值都是0, ...

  10. 更改Android编译软件版本(make/gcc/bision)

    一.make版本 1.下载make的压缩包 ftp://ftp.gnu.org/gnu/make/ 2.解压,安装 cd make-x.x ./configuration sh build.sh su ...