【编者按】:网学网PHP为您提供PHP 图片水印类代码参考,解决您在PHP 图片水印类代码学习中工作中的难题,参考学习。
支持文字水印、
图片水印
支持水印的位置随机或固定(九宫格)
水印透明度设置(
图片水印和文字水印都支持)
文字水印的字体、颜色、大小设置
图片水印的背景透明
复制代码 代码如下:
<?php
/**
* 加水印类,支持文字图片水印的透明度设置、水印
图片背景透明。
* 日期:2011-09-27
* 作者:www.jb51.net
* 使用:
* $obj = new WaterMask($imgFileName); //实例化对象
* $obj->$waterType = 1; //类型:0为文字水印、1为
图片水印
* $obj->$transparent = 45; //水印透明度
* $obj->$waterStr = ''www.jb51.net''; //水印文字
* $obj->$fontSize = 16; //文字字体大小
* $obj->$fontColor = array(255,0255); //水印文字颜色(RGB)
* $obj->$fontFile = = ''AHGBold.ttf''; //字体文件
* $obj->output(); //输出水印图片文件覆盖到输入的
图片文件
*/
class WaterMask{
public $waterType = 1; //水印类型:0为文字水印、1为
图片水印
public $pos = 0; //水印位置
public $transparent = 45; //水印透明度
public $waterStr = ''www.jb51.net''; //水印文字
public $fontSize = 16; //文字字体大小
public $fontColor = array(255,0,255); //水印文字颜色(RGB)
public $fontFile = ''AHGBold.ttf''; //字体文件
public $waterImg = ''logo.png''; //水印
图片 private $srcImg = ''''; //需要添加水印的
图片 private $im = ''''; //图片句柄
private $water_im = ''''; //水印图片句柄
private $srcImg_info = ''''; //图片信息
private $waterImg_info = ''''; //水印图片信息
private $str_w = ''''; //水印文字宽度
private $str_h = ''''; //水印文字高度
private $x = ''''; //水印X坐标
private $y = ''''; //水印y坐标
function __construct($img) { //析构函数
$this->srcImg = file_exists($img) ? $img : die(''"''.$img.''" 源文件不存在!'');
}
private function imginfo() { //获取需要添加水印的图片的信息,并载入图片。
$this->srcImg_info = getimagesize($this->srcImg);
switch ($this->srcImg_info) {
case 3:
$this->im = imagecreatefrompng($this->srcImg);
break 1;
case 2:
$this->im = imagecreatefromjpeg($this->srcImg);
break 1;
case 1:
$this->im = imagecreatefromgif($this->srcImg);
break 1;
default:
die(''原图片(''.$this->srcImg.'')格式不对,只支持PNG、JPEG、GIF。'');
}
}
private function waterimginfo() { //获取水印图片的信息,并载入图片。
$this->waterImg_info = getimagesize($this->waterImg);
switch ($this->waterImg_info) {
case 3:
$this->water_im = imagecreatefrompng($this->waterImg);
break 1;
case 2:
$this->water_im = imagecreatefromjpeg($this->waterImg);
break 1;
case 1:
$this->water_im = imagecreatefromgif($this->waterImg);
break 1;
default:
die(''水印图片(''.$this->srcImg.'')格式不对,只支持PNG、JPEG、GIF。'');
}
}
private function waterpos() { //水印位置算法
switch ($this->pos) {
case 0: //随机位置
$this->x = rand(0,$this->srcImg_info[0]-$this->waterImg_info[0]);
$this->y = rand(0,$this->srcImg_info-$this->waterImg_info);
break 1;
case 1: //上左
$this->x = 0;
$this->y = 0;
break 1;
case 2: //上中
$this->x = ($this->srcImg_info[0]-$this->waterImg_info[0])/2;
$this->y = 0;
break 1;
case 3: //上右
$this->x = $this->srcImg_info[0]-$this->water