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 相关文章推荐
第三节 定义一个类 [3]
Oct 09 PHP
php session处理的定制
Mar 16 PHP
PHP与javascript实现变量交互的示例代码
Jul 23 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
Jan 31 PHP
php网页标题中文乱码的有效解决方法
Mar 05 PHP
php获取指定日期之间的各个周和月的起止时间
Nov 24 PHP
将FCKeditor导入PHP+SMARTY的实现方法
Jan 15 PHP
老版本PHP转义Json里的特殊字符的函数
Jun 08 PHP
PHP文件缓存smarty模板应用实例分析
Feb 26 PHP
PHP数组函数知识汇总
May 12 PHP
PHP自定义函数获取URL中一级域名的方法
Aug 23 PHP
Laravel框架自定义分页样式操作示例
Jan 26 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
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
TinyMCE 新增本地图片上传功能
2010/11/05 Javascript
JavaScript中使用正则匹配多条,且获取每条中的分组数据
2010/11/30 Javascript
js控制表单操作的常用代码小结
2013/08/15 Javascript
jquery实现保存已选用户
2014/07/21 Javascript
js+css实现导航效果实例
2015/02/10 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
2017/01/13 Javascript
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
2017/11/15 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
2018/03/21 Javascript
D3.js实现简洁实用的动态仪表盘的示例
2018/04/04 Javascript
vue实现点击选中,其他的不选中方法
2018/09/05 Javascript
2种在vue项目中使用百度地图的简单方法
2018/09/28 Javascript
小程序云开发部署攻略(图文教程)
2018/10/30 Javascript
从组件封装看Vue的作用域插槽的实现
2019/02/12 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
[03:56]DOTA2完美大师赛趣味视频之小鸽子和Mineski打台球
2017/11/24 DOTA
[01:20:37]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
[52:37]完美世界DOTA2联赛循环赛 Forest vs DM BO2第一场 10.29
2020/10/29 DOTA
比较详细Python正则表达式操作指南(re使用)
2008/09/06 Python
python Django的web开发实例(入门)
2019/07/31 Python
Python缓存技术实现过程详解
2019/09/25 Python
python pycharm最新版本激活码(永久有效)附python安装教程
2020/09/18 Python
美国设计师精美珠宝购物网:Netaya
2016/08/28 全球购物
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
OSPF有什么优点?为什么OSPF比RIP收敛快?
2013/02/13 面试题
计算机毕业大学生推荐信
2013/12/01 职场文书
一名毕业生的自我鉴定
2013/12/04 职场文书
财务管理专业自荐信范文
2013/12/24 职场文书
医院总经理职责
2013/12/26 职场文书
市场部业务员岗位职责
2014/04/02 职场文书
夫妻吵架保证书
2015/05/08 职场文书
如何书写读后感?(附范文)
2019/07/26 职场文书
Django使用echarts进行可视化展示的实践
2021/06/10 Python
SpringBoot生成License的实现示例
2021/06/16 Java/Android
sentinel支持的redis高可用集群配置详解
2022/04/01 Redis