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蜘蛛统计插件只要有mysql就可用
Oct 12 PHP
php获取通过http协议post提交过来xml数据及解析xml
Dec 16 PHP
php面向对象中的魔术方法中文说明
Mar 04 PHP
推荐几个开源的微信开发项目
Dec 28 PHP
PHP之正则表达式捕获组与非捕获组(详解)
Jul 29 PHP
PHP读取大文件末尾N行的高效方法推荐
Jun 03 PHP
深入理解PHP JSON数组与对象
Jul 19 PHP
php微信公众平台开发(一) 配置接口
Dec 06 PHP
Laravel学习教程之View模块详解
Sep 18 PHP
PHP基于curl模拟post提交json数据示例
Jun 22 PHP
php定期拉取数据对比方法实例
Sep 22 PHP
PHP的垃圾回收机制代码实例讲解
Feb 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实现搜索相似图片
2015/09/22 PHP
php源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
Laravel 的数据库迁移的方法
2017/07/31 PHP
ThinkPHP3.2框架操作Redis的方法分析
2019/05/05 PHP
newxtree.js代码
2007/03/13 Javascript
自己的js工具 Cookie 封装
2009/08/21 Javascript
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
JS去除字符串两端空格的简单实例
2013/12/27 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
2015/01/26 Javascript
Jquery注册事件实现方法
2015/05/18 Javascript
JavaScript html5 canvas绘制时钟效果
2016/03/01 Javascript
详解微信小程序开发之下拉刷新 上拉加载
2016/11/24 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
JS全角与半角转化实例(分享)
2017/07/04 Javascript
原生JavaScript实现的简单放大镜效果示例
2018/02/07 Javascript
解决vue点击控制单个样式的问题
2018/09/05 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
jQuery pager.js 插件动态分页功能实例分析
2019/08/02 jQuery
layer父页获取弹出层输入框里面的值方法
2019/09/02 Javascript
Vue项目打包部署到apache服务器的方法步骤
2021/02/01 Vue.js
Python不使用int()函数把字符串转换为数字的方法
2018/07/09 Python
Django重设Admin密码过程解析
2020/02/10 Python
Python包和模块的分发详细介绍
2020/06/19 Python
Python try except finally资源回收的实现
2021/01/25 Python
HTML5之HTML元素扩展(上)—新增加的元素及使用概述
2013/01/31 HTML / CSS
data:image data url 文件转为Blob上传后端的方法
2019/07/16 HTML / CSS
味多美官网:蛋糕订购,100%使用天然奶油
2017/11/10 全球购物
The North Face北面荷兰官网:美国著名户外品牌
2019/10/16 全球购物
德国、奥地利和瑞士最大的旅行和度假门户网站:HolidayCheck
2019/11/14 全球购物
办公室人员先进事迹
2014/01/27 职场文书
个人授权委托书样本
2014/09/13 职场文书
超级实用的公文标题大全!
2019/07/19 职场文书
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
2021/06/26 MySQL
MySQL 条件查询的常用操作
2022/04/28 MySQL