PHP根据图片色界在不同位置加水印的方法


Posted in PHP onJuly 01, 2015

本文实例讲述了PHP根据图片色界在不同位置加水印的方法。分享给大家供大家参考。具体实现方法如下:

function add_wm($nmw_water, $src_file, $output_file, $x, $y) {    
    if(file_exists($output_file))    
      return;    
    $w1 = MagickGetImageWidth($nmw_water);    
    $h1 = MagickGetImageHeight($nmw_water);    
    $nmw =NewMagickWand();    
    MagickReadImage($nmw, $src_file);    
    // 默认的加水印位置调整    
    $lt_w = 50;    
    $lt_h = 50;    
    if($x == 0){    
      $w = MagickGetImageWidth($nmw);    
      $h = MagickGetImageHeight($nmw);    
      $x = $w;    
      $y = $h;    
    }else{    
      // 根据具体情况调整    
      $lt_w = 30;    
      $lt_h = 40;    
    }    
    MagickCompositeImage($nmw, $nmw_water, MW_OverCompositeOp, $x - $w1 - $lt_w, $y - $h1 - $lt_h);    
    MagickWriteImage($nmw, $output_file);    
    DestroyMagickWand($nmw);        
  }    
  // 还是groovy的eachFileRecurse好用啊    
  function add_wm_recurse($nmw_water, $to_dir, $output_dir, $arr) {
    $dp = dir($to_dir);    
    while($file=$dp->read()){    
      if($file != '.' && $file != '..'){    
        if(is_dir($to_dir . '/' . $file)){    
          mkdir($output_dir . '/' . $file);    
          add_wm_recurse($nmw_water, $to_dir . '/' . $file, $output_dir . '/' . $file, $arr);    
        }else{    
          if(!array_key_exists($to_dir . '/' . $file, $arr)){
            continue;    
          }    
          $sub_arr = $arr[$to_dir . '/' . $file];    
          if($sub_arr){    
            $x = intval($sub_arr[0]);    
            $y = intval($sub_arr[1]);    
            add_wm($nmw_water, $to_dir . '/' . $file, $output_dir . '/' . $file, $x, $y);    
          }    
        }    
      }    
    }    
    $dp->close();    
  }    
  $to_dir = './resized';    
  $output_dir = './output';    
  // 这个是我用java的ImageIO遍历图片像素获取的符合裤子颜色的区域的坐标array(posX, posY)    
  $arr = array(    
    array(50, 50)    
  );    
  $water = './water.png';    
  $nmw_water =NewMagickWand();    
  MagickReadImage($nmw_water, $water);    
  add_wm_recurse($nmw_water, $to_dir, $output_dir, $arr);    
  DestroyMagickWand($nmw_water);

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
深入了解php4(2)--重访过去
Oct 09 PHP
php缓存技术介绍
Nov 25 PHP
如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的
Mar 06 PHP
php xml留言板 xml存储数据的简单例子
Aug 24 PHP
PHP里的中文变量说明
Jul 23 PHP
PHP中使用数组实现堆栈数据结构的代码
Feb 05 PHP
解析PHP对现有搜索引擎的调用
Jun 25 PHP
php+highchats生成动态统计图
May 21 PHP
微信营销平台系统?刮刮乐的开发
Jun 10 PHP
php函数重载的替代方法--伪重载详解
May 08 PHP
PHP回调函数与匿名函数实例详解
Aug 16 PHP
PHP的imageTtfText()函数深入详解
Mar 03 PHP
php检测图片主要颜色的方法
Jul 01 #PHP
PHP函数实现从一个文本字符串中提取关键字的方法
Jul 01 #PHP
浅谈php提交form表单
Jul 01 #PHP
用PHP代码给图片加水印
Jul 01 #PHP
用PHP代码在网页上生成图片
Jul 01 #PHP
PHP文件操作方法汇总
Jul 01 #PHP
浅谈PHP中JSON数据操作
Jul 01 #PHP
You might like
深入解析php模板技术原理【一】
2008/01/10 PHP
php class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
PHP开发中csrf攻击的简单演示和防范
2017/05/07 PHP
js trim函数 去空格函数与正则集锦
2009/11/20 Javascript
在多个页面使用同一个HTML片段《续》
2011/03/04 Javascript
js面向对象 多种创建对象方法小结
2012/05/21 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
2014/01/31 Javascript
jQuery选择器用法实例详解
2015/12/17 Javascript
使用JS中的exec()方法构造正则表达式验证
2016/08/01 Javascript
Angularjs的ng-repeat中去除重复数据的方法
2016/08/05 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
Angularjs使用指令做表单校验的方法
2017/03/31 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
使用layui实现的左侧菜单栏以及动态操作tab项方法
2019/09/10 Javascript
微信小程序实现上传多个文件 超过10个
2020/03/30 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
2020/04/24 Javascript
教你安装python Django(图文)
2013/11/04 Python
Python中apply函数的用法实例教程
2014/07/31 Python
Python中运行并行任务技巧
2015/02/26 Python
Python中用max()方法求最大值的介绍
2015/05/15 Python
Python的Django应用程序解决AJAX跨域访问问题的方法
2016/05/31 Python
使用Python读取二进制文件的实例讲解
2018/07/09 Python
为什么Python中没有"a++"这种写法
2018/11/27 Python
Python实例方法、类方法、静态方法的区别与作用详解
2019/03/25 Python
Python脚本利用adb进行手机控制的方法
2019/07/08 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
2020/02/21 Python
解析Tensorflow之MNIST的使用
2020/06/30 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
银行会计业务的个人自我评价
2013/11/02 职场文书
高中同学聚会邀请函
2014/01/11 职场文书
应届硕士毕业生自荐信
2014/05/26 职场文书
英文慰问信范文
2015/03/24 职场文书
教你怎么用Python实现多路径迷宫
2021/04/29 Python