water.config.php
- <?php
- /*
- *
- */
- //获得数据库模型的对象
- function M($table){
- return new Model($table);
- }
- //打印信息
- function p($msg){
- echo "<pre>";
- print_r($msg);
- echo "</pre>";
- }
- //提示错误信息
- function error($msg){
- echo "<div align='center' style='border:solid 3px #dcdcdc;padding:20px;margin:0 auto;'>
- $msg
- </div>";
- exit;
- }
- //自动加载类文件
- function __autoload($className){
- if(strlen($className)>7 && substr($className,-7) == 'Control'){
- $classFile = PATH_APP.'/control/'.$className.'.php';
- }else{
- $classFile = PATH_XL.'/libs/bin/'.$className.'.class.php';
- }
- if(!is_file($classFile)){
- exit($classFile."文件不存在");
- }
- include $classFile;
- }
- //加载、设置配置项
- function C($name=null,$value=null){
- static $config =array();
- if(is_array($name)){
- $config = array_merge($config,array_change_key_case($name));
- }
- if(is_string($name)){
- $name = strtolower($name);
- if(!is_null($value)){
- $congfig[$name]=$value;
- return true;
- }
- return isset($config[$name])?$config[$name]:null;
- }
- if(is_null($name)){
- return $config;
- }
- }
- //加载、设置字体
- function L($name=null,$value=null){
- static $lang = array();
- if(is_array($name)){
- $lang = array_merge($lang,array_change_key_case($name));
- }
- if(is_string($name)){
- $name = strtolower($name);
- if(!is_null($value)){
- $lang[$name]=$value;
- return true;
- }
- return isset($lang[$name])?$lang[$name]:null;
- }
- if(is_null($name)){
- return $lang;
- }
- }
- //获得文件、文件夹的大小
- function getsize($path,$type=null){
- if(is_file($path)) return filesize($path);
- $type = is_null($type)?"*":"*.$type";
- $files = glob($path.'/'.$type);
- $size = 0;
- foreach($files as $f){
- $size+=is_dir($f)?getsize($f):filesize($f);
- }
- return $size;
- }
- ?>
- <?php
- return array(
- //水印处理配置项
- 'water_img' => 'water.jpg',//水印图片
- 'water_pos' => '9',//水印位置 取值范围:1-9
- /* 1-9的位置分别为
- ↖ ↑ ↗
- ← · →
- ↙ ↓ ↘
- */
- 'water_pct' => 60,//水印透明度 取值范围:0-100 (值越大、水印越清晰)
- );
- ?>
- <?php
- include "functions.php";//加载小工具函数
- C(include "water.config.php");//读取水印类配置项
- //水印处理类
- class waterd{
- public $water_pos='';//水印位置
- public $water_pct='';//水印透明度
- private $res;//图像资源
- //构造函数
- function __construct($pos=null,$pct=null){
- $this->water_pos = is_null($pos)?C('water_pos'):$pos;
- $this->water_pct = is_null($pct)?C('water_pct'):$pct;
- }
- //添加水印方法
- public function water($img){
- //检测
- if(!$this->check($img)){
- return false;
- }
- //水印图片资源
- $water_res = $this -> getres(C('water_img'));
- //原始图片资源
- $img_res = $this -> getres($img);
- //水印位置
- $posArr = $this -> getpos($img_res,$water_res);
- imagecopymerge($img_res,$water_res,$posArr[0],$posArr[1],0,0,imagesx($water_res),imagesy($water_res),$this->water_pct);
- $info = getimagesize($img);
- //打印图片信息 测试时可开启当前打印 p($info);
- $func = str_replace('/','',$info['mime']);
- $func($img_res,$img);
- }
- //检测
- private function check($img){
- return is_file($img) && extension_loaded('GD') && getimagesize($img);
- }
- //获得图片资源
- private function getres($img){
- $info = getimagesize($img);
- $type = trim(image_type_to_extension($info[2]),'.');
- $func = 'imagecreatefrom'.$type;
- return $func($img);
- }
- //获得水印位置
- private function getpos($img_res,$water_res){
- $img_x = imagesx($img_res);//原图宽度
- $img_y = imagesy($img_res);//原图宽度
- $water_x = imagesx($water_res);//水印宽度
- $water_y = imagesy($water_res);//水印宽度
- $pos = $this -> water_pos;//水印位置
- $x=15;$y=15;
- switch($pos){
- case 1:
- break;
- case 2:
- $x = ($img_x-$water_x)/2;
- break;
- case 3:
- $x = $img_x-$water_x-15;
- break;
- case 4:
- $y = ($img_y-$water_y)/2;
- break;
- case 5:
- $x = ($img_x-$water_x)/2;
- $y = ($img_y-$water_y)/2;
- break;
- case 6:
- $x = $img_x-$water_x-15;
- $y = ($img_y-$water_y)/2;
- break;
- case 7:
- $y = $img_y-$water_y-15;
- break;
- case 8:
- $x = ($img_x-$water_x)/2;
- $y = $img_y-$water_y-15;
- break;
- case 9:
- $x = $img_x-$water_x-15;
- $y = $img_y-$water_y-15;
- break;
- }
- return array($x,$y);
- }
- }
- //new一个对象然后 调用 水印的方法 water()即可、传进要添加水印的图片即可
- $x = new waterd();
- $x->water('img.jpg');
- ?>
来源: http://www.phpxs.com/code/1003378/