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 20 PHP
学习php分页代码实例
Oct 24 PHP
thinkphp的c方法使用示例
Feb 24 PHP
PHP动态编译出现Cannot find autoconf的解决方法
Nov 05 PHP
PHP实现微信发红包程序
Aug 24 PHP
WordPress中获取指定分类及其子分类下的文章数目
Dec 31 PHP
PHP中的Trait 特性及作用
Apr 03 PHP
PHP7.1新功能之Nullable Type用法分析
Sep 26 PHP
PHP中rename()函数的妙用讲解
Feb 28 PHP
PHP PDO和消息队列的个人理解与应用实例分析
Nov 25 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 PHP
YII2框架中查询生成器Query()的使用方法示例
Mar 18 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中文分词系统SCWS安装和使用实例
2014/04/11 PHP
yii2.0之GridView自定义按钮和链接用法
2014/12/15 PHP
PHP中串行化用法示例
2016/11/16 PHP
js实现鼠标经过表格行变色的方法
2015/05/12 Javascript
js实现的后台左侧管理菜单代码
2015/09/11 Javascript
怎么引入(调用)一个JS文件
2016/05/26 Javascript
老生常谈 关于JavaScript的类的继承
2016/06/24 Javascript
AngularJS 获取ng-repeat动态生成的ng-model值实例详解
2016/11/29 Javascript
vue.js实现表格合并示例代码
2016/11/30 Javascript
JS实现全屏的四种写法
2016/12/30 Javascript
JS中的数组转变成JSON格式字符串的方法
2017/05/09 Javascript
vue-router实现tab标签页(单页面)详解
2017/10/17 Javascript
D3.js实现简洁实用的动态仪表盘的示例
2018/04/04 Javascript
Element Popover 弹出框的使用示例
2020/07/26 Javascript
[41:56]Spirit vs Liquid Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
[03:11]TI9战队档案 - Alliance
2019/08/20 DOTA
Python模块学习 datetime介绍
2012/08/27 Python
Python3.2中的字符串函数学习总结
2015/04/23 Python
python实现判断数组是否包含指定元素的方法
2015/07/15 Python
Python基础教程之正则表达式基本语法以及re模块
2016/03/25 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
2018/12/11 Python
Pycharm新手教程(只需要看这篇就够了)
2019/06/18 Python
200行python代码实现2048游戏
2019/07/17 Python
django中瀑布流写法实例代码
2019/10/14 Python
python的range和linspace使用详解
2019/11/27 Python
Python Dict找出value大于某值或key大于某值的所有项方式
2020/06/05 Python
纯CSS实现设置半个字符的样式
2014/07/03 HTML / CSS
世界最大的私人旅行指南出版商:孤独星球
2016/08/23 全球购物
服装设计行业个人的自我评价
2013/12/20 职场文书
好员工观后感
2015/06/17 职场文书
2015年征兵工作总结
2015/07/23 职场文书
2015年科普工作总结
2015/07/23 职场文书
Python爬虫实战之爬取携程评论
2021/06/02 Python
zabbix监控mysql的实例方法
2021/06/02 MySQL
JavaScript数组 几个常用方法总结
2021/11/11 Javascript
PHP 时间处理类Carbon
2022/05/20 PHP