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 相关文章推荐
PHP5在Apache下的两种模式的安装
Sep 05 PHP
php对gzip文件或者字符串解压实例参考
Jul 25 PHP
smarty的保留变量问题
Oct 23 PHP
php入门学习知识点七 PHP函数的基本应用
Jul 14 PHP
php mssql扩展SQL查询中文字段名解决方法
Oct 15 PHP
php中simplexml_load_file函数用法实例
Nov 12 PHP
PHP curl伪造IP地址和header信息代码实例
Apr 27 PHP
php猜单词游戏
Sep 29 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
PHP实现数据库的增删查改功能及完整代码
Apr 18 PHP
PHP使用file_get_contents发送http请求功能简单示例
Apr 29 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
Mar 22 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除数取整示例
2014/04/24 PHP
在PHP程序中使用Rust扩展的方法
2015/07/03 PHP
PHP设计模式之观察者模式实例
2016/02/22 PHP
PHP高精确度运算BC函数库实例详解
2017/08/15 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
2019/09/26 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
javascript 匿名函数的理解(透彻版)
2010/01/28 Javascript
js 复制或插入Html的实现方法小结
2010/05/19 Javascript
自定义右键属性覆盖浏览器默认右键行为实现代码
2013/02/02 Javascript
jQuery瀑布流插件Wookmark使用实例
2014/04/02 Javascript
jquery中animate的stop()方法作用实例分析
2015/01/30 Javascript
浅谈Javascript中substr和substring的区别
2015/09/30 Javascript
jQuery+json实现的简易Ajax调用实例
2015/12/14 Javascript
轻松掌握JavaScript中的Math object数学对象
2016/05/26 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
数组Array的一些方法(总结)
2017/02/17 Javascript
利用JS实现简单的瀑布流加载图片效果
2017/04/22 Javascript
Javascript Promise用法详解
2018/05/10 Javascript
Vue中Quill富文本编辑器的使用教程
2018/09/21 Javascript
Node 代理访问的实现
2019/09/19 Javascript
[01:45:05]VGJ.T vs Newbee Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
2017/07/06 Python
python print 按逗号或空格分隔的方法
2018/05/02 Python
caffe binaryproto 与 npy相互转换的实例讲解
2018/07/09 Python
浅析Python 读取图像文件的性能对比
2019/03/07 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
python用quad、dblquad实现一维二维积分的实例详解
2019/11/20 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
土木工程专业个人求职信
2013/12/30 职场文书
《蓝色的树叶》教学反思
2014/02/24 职场文书
北京申奥口号
2014/06/19 职场文书
归元寺导游词
2015/02/06 职场文书
加薪申请报告范本
2015/05/15 职场文书
使用Html+Css实现简易导航栏功能(导航栏遇到鼠标切换背景颜色)
2021/04/07 HTML / CSS