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 相关文章推荐
消息持续发送的完整例子
Oct 09 PHP
使用数据库保存session的方法
Oct 09 PHP
PHP获取网站域名和地址的代码
Aug 17 PHP
解析php中session的实现原理以及大网站应用应注意的问题
Jun 17 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
Feb 18 PHP
ThinkPHP独立分组使用的注意事项
Nov 25 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
Jun 20 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
Apr 20 PHP
php删除数组指定元素实现代码
May 03 PHP
php实现自定义中奖项数和概率的抽奖函数示例
May 26 PHP
phpStudy 2016 使用教程详解(支持PHP7)
Oct 18 PHP
php文件后缀不强制为.php的实操方法
Sep 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
让你同时上传 1000 个文件 (一)
2006/10/09 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
2013/06/20 PHP
laravel 实现设置时区的简单方法
2019/10/10 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
JQuery 引发两次$(document.ready)事件
2010/01/15 Javascript
JavaScript 学习笔记(十四) 正则表达式
2010/01/22 Javascript
JavaScript中SQL语句的应用实现
2010/05/04 Javascript
js判断60秒以及倒计时示例代码
2014/01/24 Javascript
javascript生成随机大小写字母的方法
2014/02/20 Javascript
jQuery入门介绍之基础知识
2015/01/13 Javascript
jquery实现倒计时功能
2015/12/28 Javascript
javascript 封装Date日期类实例详解
2017/05/28 Javascript
JavaScript函数中的this四种绑定形式
2017/08/15 Javascript
关于Vue项目跨平台运行问题的解决方法
2018/09/18 Javascript
4个顶级开源JavaScript图表库
2018/09/29 Javascript
js实现超级玛丽小游戏
2020/03/18 Javascript
详解JavaScript之Array.reduce源码解读
2020/11/01 Javascript
[01:51]2014DOTA2国际邀请赛 这个赛场没有失败者VGTi5再见
2014/07/23 DOTA
[01:04:06]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第一局
2016/02/26 DOTA
[01:11:21]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第三场 3月7日
2021/03/11 DOTA
centos系统升级python 2.7.3
2014/07/03 Python
在Python中使用itertools模块中的组合函数的教程
2015/04/13 Python
python 2.7 检测一个网页是否能正常访问的方法
2018/12/26 Python
pytorch 更改预训练模型网络结构的方法
2019/08/19 Python
python实现计算器功能
2019/10/31 Python
Pandas操作CSV文件的读写实现方法
2019/11/13 Python
python 利用已有Ner模型进行数据清洗合并代码
2019/12/24 Python
OpenCV python sklearn随机超参数搜索的实现
2020/01/17 Python
Django 权限管理(permissions)与用户组(group)详解
2020/11/30 Python
AE美国鹰日本官方网站: American Eagle Outfitters
2016/12/10 全球购物
实习生自荐信范文
2013/11/13 职场文书
校园广播稿500字
2014/02/04 职场文书
护理专业自荐信范文
2015/03/06 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书
spring项目中切面及AOP的使用方法
2021/06/26 Java/Android
Python Flask实现进度条
2022/05/11 Python