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 相关文章推荐
在smarty中调用php内置函数的方法
Feb 07 PHP
深入密码加salt原理的分析
Jun 06 PHP
php下拉选项的批量操作的实现代码
Oct 14 PHP
php实现的漂亮分页方法
Apr 17 PHP
PHP写日志的实现方法
Nov 05 PHP
php生成固定长度纯数字编码的方法
Jul 09 PHP
PHP执行linux命令常用函数汇总
Feb 02 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
May 06 PHP
PHP删除字符串中非字母数字字符方法总结
Jan 20 PHP
PHP获取访问设备信息的方法示例
Feb 20 PHP
浅谈php调用python文件
Mar 29 PHP
如何在centos8自定义目录安装php7.3
Nov 28 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 向访客和爬虫显示不同的内容
2009/11/09 PHP
php处理文件的小例子(解压缩,删除目录)
2013/02/03 PHP
php 截取utf-8格式的字符串实例代码
2016/10/30 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
基于jQuery判断两个元素是否有重叠部分的代码
2012/07/25 Javascript
固定背景实现的背景滚动特效示例分享
2013/05/19 Javascript
Node.js开发指南中的简单实例(mysql版)
2013/09/17 Javascript
动态标签 悬停效果 延迟加载示例代码
2013/11/21 Javascript
easyui datagrid 键盘上下控制选中行示例
2014/03/31 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
浅谈jquery.fn.extend与jquery.extend区别
2015/07/13 Javascript
vuejs动态组件给子组件传递数据的方法详解
2016/09/09 Javascript
JQuery 进入页面默认给已赋值的复选框打钩
2017/03/23 jQuery
详解vue.js移动端导航navigationbar的封装
2017/07/05 Javascript
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
vue数字类型过滤器的示例代码
2017/09/07 Javascript
在小程序中使用Echart图表的示例代码
2018/08/02 Javascript
Vue事件修饰符native、self示例详解
2019/07/09 Javascript
浅谈vue3中effect与computed的亲密关系
2019/10/10 Javascript
Vue 解决多级动态面包屑导航的问题
2019/11/04 Javascript
微信小程序 flexbox layout快速实现基本布局的解决方案
2020/03/24 Javascript
详解Vue中的MVVM原理和实现方法
2020/07/15 Javascript
[04:05]TI9战队采访 - Natus Vincere
2019/08/22 DOTA
Python编程实现从字典中提取子集的方法分析
2018/02/09 Python
python 按照固定长度分割字符串的方法小结
2018/04/30 Python
Python使用win32 COM实现Excel的写入与保存功能示例
2018/05/03 Python
对numpy中二进制格式的数据存储与读取方法详解
2018/11/01 Python
解决pandas .to_excel不覆盖已有sheet的问题
2018/12/10 Python
树莓派+摄像头实现对移动物体的检测
2019/06/22 Python
Flask教程之重定向与错误处理实例分析
2019/08/01 Python
基于python 取余问题(%)详解
2020/06/03 Python
python mongo 向数据中的数组类型新增数据操作
2020/12/05 Python
机电一体化专业应届生求职信
2013/11/27 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
JAVA长虹键法之建造者Builder模式实现
2022/04/10 Java/Android
Python保存并浏览用户的历史记录
2022/04/29 Python