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环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
Oct 17 PHP
有关PHP中MVC的开发经验分享
May 17 PHP
php_screw 1.5:php加密: 安装与使用详解
Jun 20 PHP
使用PHP求两个文件的相对路径
Jun 20 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
Jan 28 PHP
Thinkphp框架开发移动端接口(1)
Aug 18 PHP
老生常谈PHP数组函数array_merge(必看篇)
May 25 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
PHP如何搭建百度Ueditor富文本编辑器
Sep 21 PHP
golang实现php里的serialize()和unserialize()序列和反序列方法详解
Oct 30 PHP
PHP根据key删除数组中指定的元素
Feb 28 PHP
使用composer 安装 laravel框架的方法图文详解
Aug 02 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页面跳转代码 输入网址跳转到你定义的页面
2013/03/28 PHP
php ci框架中加载css和js文件失败的解决方法
2014/03/03 PHP
laravel框架分组控制器和分组路由实现方法示例
2020/01/25 PHP
PHP如何解决微信文章图片防盗链
2020/12/09 PHP
用javascript实现点击链接弹出"图片另存为"而不是直接打开
2007/08/15 Javascript
javascript import css实例代码
2008/07/18 Javascript
js 去除字符串第一位逗号的方法
2014/06/07 Javascript
node.js实现逐行读取文件内容的代码
2014/06/27 Javascript
jQuery实现列表自动滚动循环滚动展示新闻
2014/08/22 Javascript
使用jquery 简单实现下拉菜单
2015/01/14 Javascript
Backbone.js的Hello World程序实例
2015/06/19 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
2015/06/19 Javascript
基于jQuery实现咖啡订单管理简单应用
2017/02/10 Javascript
js this 绑定机制深入详解
2020/04/30 Javascript
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
[01:28]2014DOTA2国际邀请赛中国区预选赛四大豪门直升机抵达会场
2014/05/24 DOTA
[32:17]完美世界DOTA2联赛循环赛LBZS vs Forest第二场 10月30日
2020/10/31 DOTA
Python FTP操作类代码分享
2014/05/13 Python
Django中针对基于类的视图添加csrf_exempt实例代码
2018/02/11 Python
Django分页查询并返回jsons数据(中文乱码解决方法)
2018/08/02 Python
解决Python 使用h5py加载文件,看不到keys()的问题
2019/02/08 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
2019/02/21 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
Python类继承和多态原理解析
2020/02/05 Python
详解tf.device()指定tensorflow运行的GPU或CPU设备实现
2021/02/20 Python
美国网上订购鲜花:FTD
2016/09/23 全球购物
香港钟表珠宝首饰商城:OneMallTime网摩间
2016/10/14 全球购物
荷兰浴室和卫浴网上商店:Badkamerxxl.nl
2020/10/06 全球购物
日语翻译个人求职的自我评价
2013/10/14 职场文书
酒店司机岗位职责
2013/12/14 职场文书
细节决定成败演讲稿
2014/05/12 职场文书
检察院院长群众路线教育实践活动个人整改措施
2014/10/04 职场文书
2014年煤矿安全工作总结
2014/12/04 职场文书
委托函范文
2015/01/29 职场文书
项目备案申请报告
2015/05/15 职场文书
Python文件的操作示例的详细讲解
2021/04/08 Python