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 相关文章推荐
实时抓取YAHOO股票报价的代码
Oct 09 PHP
php下检测字符串是否是utf8编码的代码
Jun 28 PHP
php与XML、XSLT、Mysql的结合运用实现代码
Nov 19 PHP
PHP JSON格式数据交互实例代码详解
Jan 13 PHP
微博短链接算法php版本实现代码
Sep 15 PHP
PHP-FPM实现性能优化
Mar 31 PHP
PHP通过加锁实现并发情况下抢码功能
Aug 10 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
Jan 30 PHP
php实现socket推送技术的示例
Dec 20 PHP
PHP+redis实现的悲观锁机制示例
Jun 12 PHP
php根据地址获取百度地图经纬度的实例方法
Sep 03 PHP
laravel实现上传图片的两种方式小结
Oct 12 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 面向对象详解
2012/09/13 PHP
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
PHP使用mysql_fetch_object从查询结果中获取对象集的方法
2015/03/18 PHP
PHP session 会话处理函数
2016/06/06 PHP
PHP函数rtrim()使用中的怪异现象分析
2017/02/24 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
JQuery之focus函数使用介绍
2013/08/20 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
2015/03/25 Javascript
简单介绍jsonp 使用小结
2016/01/27 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
2016/04/28 Javascript
JS双击变input框批量修改内容
2016/12/12 Javascript
jQuery html表格排序插件tablesorter使用方法详解
2017/02/10 Javascript
Angular中点击li标签实现更改颜色的核心代码
2017/12/08 Javascript
Vue项目打包部署到apache服务器的方法步骤
2021/02/01 Vue.js
Python基础中所出现的异常报错总结
2016/11/19 Python
pandas进行数据的交集与并集方式的数据合并方法
2018/06/27 Python
django项目用higcharts统计最近七天文章点击量
2019/08/17 Python
Python如何访问字符串中的值
2020/02/09 Python
PyQt5 界面显示无响应的实现
2020/03/26 Python
python中字符串的编码与解码详析
2020/12/03 Python
猫途鹰:全球领先的旅游点评社区
2017/04/07 全球购物
美国高档帽子网上商店:Hats.com
2018/08/09 全球购物
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
大学生毕业自我鉴定范文
2013/11/03 职场文书
银行实习的自我鉴定
2013/12/10 职场文书
家长对孩子评语
2014/01/30 职场文书
《自然之道》教学反思
2014/02/11 职场文书
大学生军训感想
2014/02/16 职场文书
服装促销活动方案
2014/02/23 职场文书
教师党员承诺书
2014/03/25 职场文书
2014年基层党支部工作总结
2014/12/04 职场文书
答辩状格式范本
2015/05/22 职场文书
公司员工奖惩制度
2015/08/04 职场文书
新教师教学工作总结
2015/08/12 职场文书
任命书格式模板
2015/09/22 职场文书
SpringBoot中HttpSessionListener的简单使用方式
2022/03/17 Java/Android