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 相关文章推荐
php实现网站插件机制的方法
Nov 10 PHP
MySQL时间字段究竟使用INT还是DateTime的说明
Feb 27 PHP
CodeIgniter图像处理类的深入解析
Jun 17 PHP
thinkphp在模型中自动完成session赋值示例代码
Sep 09 PHP
php实现在限定区域里自动调整字体大小的类实例
Apr 02 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
May 30 PHP
php实现文件与16进制相互转换的方法示例
Feb 16 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
Dec 18 PHP
PHP学习记录之常用的魔术常量详解
Dec 12 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
Jan 26 PHP
php让json_encode不自动转义斜杠“/”的方法
Apr 27 PHP
PHP code 验证码生成类定义和简单使用示例
May 27 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 采集书并合成txt格式的实现代码
2009/03/01 PHP
PHP编译安装中遇到的两个错误和解决方法
2014/08/20 PHP
php实现在多维数组中查找特定value的方法
2015/07/29 PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
2016/10/09 PHP
Javascript 学习书 推荐
2009/06/13 Javascript
在一个浏览器里呈现所有浏览器测试结果的前端测试工具的思路
2010/03/02 Javascript
jquery remove方法应用详解
2012/11/22 Javascript
JS+css 图片自动缩放自适应大小
2013/08/08 Javascript
可自己添加html的伪弹出框实现代码
2013/09/08 Javascript
javascript:void(0)的作用示例介绍
2013/10/28 Javascript
JS实现多物体缓冲运动实例代码
2013/11/29 Javascript
JQuery中$.ajax()方法参数详解及应用
2013/12/12 Javascript
js结合正则实现国内手机号段校验
2015/06/19 Javascript
VUE实现日历组件功能
2017/03/13 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
浅谈如何使用webpack构建多页面应用
2018/05/30 Javascript
JavaScript实现点击切换验证码及校验
2021/01/10 Javascript
Python单元测试框架unittest简明使用实例
2015/04/13 Python
python函数装饰器用法实例详解
2015/06/04 Python
Python数据类型之List列表实例详解
2019/05/08 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
完美解决python针对hdfs上传和下载的问题
2020/06/05 Python
python opencv pytesseract 验证码识别的实现
2020/08/28 Python
详解CSS3中Media Queries的相关使用
2015/07/17 HTML / CSS
HTML5中的postMessage API基本使用教程
2016/05/20 HTML / CSS
5分钟弄清楚html5的drag and drop(小结)
2019/04/10 HTML / CSS
详解html5 canvas常用api总结(二)--绘图API
2016/12/14 HTML / CSS
阿根廷网上配眼镜:SmartBuyGlasses阿根廷
2016/08/19 全球购物
英国领先的在线药房:Pharmacy First
2017/09/10 全球购物
高中英语教学反思
2014/02/04 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
带香烟到学校抽的检讨书
2014/09/25 职场文书
如何写贫困证明申请书
2014/10/29 职场文书
2015年国庆放假通知范文
2015/08/18 职场文书
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB
详解SQL的窗口函数
2022/04/21 Oracle