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 转换字符串编码 iconv与mb_convert_encoding的区别说明
Nov 10 PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
Jul 04 PHP
PHP模拟asp中response类实现方法
Aug 08 PHP
Yii多表联合查询操作详解
Jun 02 PHP
php中array_slice和array_splice函数解析
Oct 18 PHP
php事件驱动化设计详解
Nov 10 PHP
php版阿里云OSS图片上传类详解
Dec 01 PHP
Laravel学习教程之View模块详解
Sep 18 PHP
PHP实现的数组和XML文件相互转换功能示例
Mar 15 PHP
PHP cookie与session会话基本用法实例分析
Nov 18 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 PHP
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
Mar 29 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实现验证码功能
2006/10/09 PHP
再次研究下cache_lite
2007/02/14 PHP
JavaScript获取/更改文本框的值的实例代码
2013/08/02 Javascript
java中String类型变量的赋值问题介绍
2016/03/23 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
2016/10/27 Javascript
jQuery实现立体式数字滚动条增加效果
2016/12/21 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
2017/02/24 Javascript
jQuery中ajax请求后台返回json数据并渲染HTML的方法
2018/08/08 jQuery
Angular value与ngValue区别详解
2019/11/27 Javascript
openlayers实现地图测距测面
2020/09/25 Javascript
Vue实现购物小球抛物线的方法实例
2020/11/22 Vue.js
用Python编写生成树状结构的文件目录的脚本的教程
2015/05/04 Python
python 默认参数问题的陷阱
2016/02/29 Python
对Python 检查文件名是否规范的实例详解
2019/06/10 Python
简单了解django缓存方式及配置
2019/07/19 Python
Python简易版图书管理系统
2019/08/12 Python
使用OpenCV实现仿射变换—旋转功能
2019/08/29 Python
python3使用GUI统计代码量
2019/09/18 Python
Python 实现网课实时监控自动签到、打卡功能
2020/03/12 Python
在python中修改.properties文件的操作
2020/04/08 Python
如何打包Python Web项目实现免安装一键启动的方法
2020/05/21 Python
Django实现任意文件上传(最简单的方法)
2020/06/03 Python
使用纯HTML5编写一款网页上的时钟的代码分享
2015/11/16 HTML / CSS
SheIn俄罗斯:时尚女装网上商店
2017/02/28 全球购物
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
CheapTickets泰国:廉价航班,查看促销价格并预订机票
2019/12/28 全球购物
在网络中有两台主机A和B,并通过路由器和其他交换设备连接起来,已经确认物理连接正确无误,怎么来测试这两台机器是否连通?如果不通,怎么来判断故障点?怎么排
2014/01/13 面试题
自荐信封面
2013/12/04 职场文书
《那片绿绿的爬山虎》教学反思
2014/02/27 职场文书
个人贷款担保书
2014/04/01 职场文书
大学活动总结模板
2014/07/10 职场文书
送达通知书
2015/04/25 职场文书
海上钢琴师的观后感
2015/06/11 职场文书
分析JVM源码之Thread.interrupt系统级别线程打断
2021/06/29 Java/Android
解决persistence.xml配置文件修改存放路径的问题
2022/02/24 Java/Android
德劲DE1105机评
2022/04/05 无线电