PHP加水印代码 支持文字和图片水印

   PHP加图片水印、文字水印类代码,PHP加水印类,支持文字图片水印的透明度设置、水印图片背景透明。自己写的一个类,因为自己开发的一套CMS中要用到,网上的总感觉用着不顺手,希望大家也喜欢这个类,后附有类使用方法。

  001

  002class WaterMask{

  003 public $waterType = 1; //水印类型:0为文字水印、1为图片水印

  004 public $pos = 0; //水印位置

  005 public $transparent = 45; //水印透明度

  006 public $waterStr = 'www.codefans.net'; //水印文字

  007 public $fontSize = 16; //文字字体大小

  008 public $fontColor = array(255,0,255); //水印文字颜色(RGB)

  009 public $fontFile = 'AHGBold.ttf';//字体文件

  010 public $waterImg = 'logo.png';//水印图片

  011 private $srcImg = '';//需要添加水印的图片

  012 private $im = '';//图片句柄

  013 private $water_im = '';//水印图片句柄

  014 private $srcImg_info = '';//图片信息

  015 private $waterImg_info = '';//水印图片信息

  016 private $str_w = '';//水印文字宽度

  017 private $str_h = '';//水印文字高度

  018 private $x = '';//水印X坐标

  019 private $y = '';//水印y坐标

  020 function __construct($img) {

  021 $this->srcImg = file_exists($img) $img : die('"'.$img.'" 对不起,水印文件不存在!');

  022 }

  023 private function imginfo() {//获取水印图片信息,并加载。

  024 $this->srcImg_info = getimagesize($this->srcImg);

  025 switch ($this->srcImg_info[2]) {

  026 case 3:

  027 $this->im = imagecreatefrompng($this->srcImg);

  028 break 1;

  029 case 2:

  030 $this->im = imagecreatefromjpeg($this->srcImg);

  031 break 1;

  032 case 1:

  033 $this->im = imagecreatefromgif($this->srcImg);

  034 break 1;

  035 default:

  036 die('水印图片('.$this->srcImg.')水印图片格式不对,请选择PNG、JPEG、GIF格式的图片。');

  037 }

  038 }

  039 private function waterimginfo() {//获取水印图片并载入。

  040 $this->waterImg_info = getimagesize($this->waterImg);

  041 switch ($this->waterImg_info[2]) {

  042 case 3:

  043 $this->water_im = imagecreatefrompng($this->waterImg);

  044 break 1;

  045 case 2:

  046 $this->water_im = imagecreatefromjpeg($this->waterImg);

  047 break 1;

  048 case 1:

  049 $this->water_im = imagecreatefromgif($this->waterImg);

  050 break 1;

  051 default:

  052 die('水印图片('.$this->srcImg.')格式不对,只支持PNG、JPEG、GIF。');

  053 }

  054 }

  055 private function waterpos() {//水印位置算法

  056 switch ($this->pos) {

  057 case 0: //随机位置

  058 $this->x = rand(0,$this->srcImg_info[0]-$this->waterImg_info[0]);

  059 $this->y = rand(0,$this->srcImg_info[1]-$this->waterImg_info[1]);

  060 break 1;

  061 case 1: //上左

  062 $this->x = 0;

  063 $this->y = 0;

  064 break 1;

  065 case 2: //上中

  066 $this->x = ($this->srcImg_info[0]-$this->waterImg_info[0])/2;

  067 $this->y = 0;

  068 break 1;

  069 case 3: //上右

  070 $this->x = $this->srcImg_info[0]-$this->waterImg_info[0];

  071 $this->y = 0;

  072 break 1;

  073 case 4: //中左

  074 $this->x = 0;

  075 $this->y = ($this->srcImg_info[1]-$this->waterImg_info[1])/2;

  076 break 1;

  077 case 5: //中中

  078 $this->x = ($this->srcImg_info[0]-$this->waterImg_info[0])/2;

  079 $this->y = ($this->srcImg_info[1]-$this->waterImg_info[1])/2;

  080 break 1;

  081 case 6: //中右

  082 $this->x = $this->srcImg_info[0]-$this->waterImg_info[0];

  083 $this->y = ($this->srcImg_info[1]-$this->waterImg_info[1])/2;

  084 break 1;

  085 case 7: //下左

  086 $this->x = 0;

  087 $this->y = $this->srcImg_info[1]-$this->waterImg_info[1];

  088 break 1;

  089 case 8: //下中

  090 $this->x = ($this->srcImg_info[0]-$this->waterImg_info[0])/2;

  091 $this->y = $this->srcImg_info[1]-$this->waterImg_info[1];

  092 break 1;

  093 default: //下右

  094 $this->x = $this->srcImg_info[0]-$this->waterImg_info[0];

  095 $this->y = $this->srcImg_info[1]-$this->waterImg_info[1];

  096 break 1;

  097 }

  098 }

  099 private function waterimg() {

  100 if ($this->srcImg_info[0] <= $this->waterImg_info[0] || $this->srcImg_info[1] <= $this->waterImg_info[1]){

  101 die('水印比原图大!');

  102 }

  103 $this->waterpos();

  104 $cut = imagecreatetruecolor($this->waterImg_info[0],$this->waterImg_info[1]);

  105 imagecopy($cut,$this->im,0,0,$this->x,$this->y,$this->waterImg_info[0],$this->waterImg_info[1]);

  106 $pct = $this->transparent;

  107 imagecopy($cut,$this->water_im,0,0,0,0,$this->waterImg_info[0],$this->waterImg_info[1]);

  108 imagecopymerge($this->im,$cut,$this->x,$this->y,0,0,$this->waterImg_info[0],$this->waterImg_info[1],$pct);

  109 }

  110 private function waterstr() {

  111 $rect = imagettfbbox($this->fontSize,0,$this->fontFile,$this->waterStr);

  112 $w = abs($rect[2]-$rect[6]);

  113 $h = abs($rect[3]-$rect[7]);

  114 $fontHeight = $this->fontSize;

  115 $this->water_im = imagecreatetruecolor($w, $h);

  116 imagealphablending($this->water_im,false);

  117 imagesavealpha($this->water_im,true);

  118 $white_alpha = imagecolorallocatealpha($this->water_im,255,255,255,127);

  119 imagefill($this->water_im,0,0,$white_alpha);

  120 $color = imagecolorallocate($this->water_im,$this->fontColor[0],$this->fontColor[1],$this->fontColor[2]);

  121 imagettftext($this->water_im,$this->fontSize,0,0,$this->fontSize,$color,$this->fontFile,$this->waterStr);

  122 $this->waterImg_info = array(0=>$w,1=>$h);

  123 $this->waterimg();

  124 }

  125 function output() {

  126 $this->imginfo();

  127 if ($this->waterType == 0) {

  128 $this->waterstr();

  129 }else {

  130 $this->waterimginfo();

  131 $this->waterimg();

  132 }

  133 switch ($this->srcImg_info[2]) {

  134 case 3:

  135 imagepng($this->im,$this->srcImg);

  136 break 1;

  137 case 2:

  138 imagejpeg($this->im,$this->srcImg);

  139 break 1;

  140 case 1:

  141 imagegif($this->im,$this->srcImg);

  142 break 1;

  143 default:

  144 die('原因未知:水印添加失败!');

  145 break;

  146 }

  147 imagedestroy($this->im);

  148 imagedestroy($this->water_im);

  149 }

  150}

  151?>

  PHP生成水印类用法:

  view sourceprint?01

  02$obj = new WaterMask($imgFileName);

  03$obj->$waterType = 1;//水印类型:0为文字水印、1为图片水印

  04$obj->$transparent = 45;//水印透明度

  05$obj->$waterStr = 'www.codefans.net';//水印文字

  06$obj->$fontSize = 16;//字体大小

  07$obj->$fontColor = array(255,0,255);//水印文字颜色(RGB值)

  08$obj->$fontFile = = 'AHGBold.ttf'; //字体名称

  09$obj->output(); //输出水印图片

  10?>

时间: 2024-07-30 14:54:17

PHP加水印代码 支持文字和图片水印的相关文章

PHP给图片添加文字或图片水印的实现代码

有时上传图片时,需要给图片添加水印,水印一般为文字或图片logo水印,下面就来看看两种添加方法. 一.文字水印 文字水印就是在图片上加上文字,主要使用gd库的imagefttext方法,并且需要字体文件.效果图如下: $dst_path = 'dst.jpg';  //创建图片的实例  $dst = imagecreatefromstring(file_get_contents($dst_path));    //打上文字  $font = './simsun.ttc';//字体路径    $b

php实现图片上传时添加文字和图片水印技巧_php技巧

本文实现的功能特别适用于一些商城和图片站中,分享了图片在上传时添加文字和图片水印的技巧,供大家参考,具体内容如下 1. water.class.php <?php header('Content-Type:text/html;charset=utf-8'); /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose

word如何添加文字和图片水印

  一.word2003添加水印 点击菜单栏的"格式"--"背景"--"水印",弹出"水印"设置窗口,先选择水印类型.如图所示: 二.word2007添加水印 word2007是点击菜单栏上面的"页面布局---水印",如图所示: 然后在水印的下拉框上面选择"自定义"即可弹出添加水印的对话框,就可以在上面添加文字水印和图片水印了.如图所示: 当然我们也可以通过在ps中添加图片水印的方法,这

c#-itextsharp添加pdf水印时,怎么设置图片水印、表格水印的透明度?

问题描述 itextsharp添加pdf水印时,怎么设置图片水印.表格水印的透明度? 哪位itextsharp高手可以指点一下,通过itextsharp添加pdf水印时,怎么设置图片水印.表格水印的透明度? 小弟通过设置PdfContentByte的waterMarkContent.SetGState(gs);,以及gs的gs.FillOpacity = 0.2f; 只对文字的透明度有效.

php加水印的代码(支持半透明透明打水印,支持png透明背景)_php实例

复制代码 代码如下: //原始图像        $dst = "/upload/20120914/20120914040740-0.jpg"; //注意图片路径要正确        //得到原始图片信息        $dst_info = getimagesize($dst);         switch ($dst_info[2])        {         case 1:         $dst_im =imagecreatefromgif($dst);break;

python发送邮件的实例代码(支持html、图片、附件)_python

第一段代码: 复制代码 代码如下: #!/usr/bin/python# -*- coding: utf-8 -*- import emailimport mimetypesfrom email.MIMEMultipart import MIMEMultipartfrom email.MIMEText import MIMETextfrom email.MIMEImage import MIMEImageimport smtplib def sendEmail(authInfo, fromAdd

jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)_jquery

一.jQuery.roll 插件使用说明 jQuery.roll 是模拟百度新闻不间断滚动效果,并支持文字.图片水平垂直滚动,该函数使用方法为: 复制代码 代码如下: /* * @module jQuery roll * @param: contentCls 内容容器className * @param: contentParentId 内容容器父元素节点ID * @param: configs 配置参数 * * @config: effect 滚动效果 * @config: duration

php实用图片水印效果代码

php实用图片水印效果代码 <?php define('Water',1);//水印方式(0,文字水印,1图片水印) define('WaterImg','./water.jpg');//水印图片地址 define('WaterNum',0);//水印位置,0为随机,1-9分别为顶左顶中顶右中左中中中右底左底中底右 define('WaterX',81);//水印长 define('WaterY',81);//水印高 define('WaterType','image/jpeg');//水印图片

[转]c# 添加图片水印,可以指定水印位置+生成缩略图

 c# 添加图片水印,可以指定水印位置+生成缩略图       早上,一哥儿发来添加图片水印的资料.有三个信息,如下:              xx 09:57:35 http://index.cnblogs.com/archive/2004/10/20/54498.aspx  王二狗 09:57:51 好的,我看看     xx 09:58:12 http://www.iyuanma.com/info/18/17026_200592663244.htm  xx 10:07:00 http:/