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相关资料
Oct 09 PHP
配置PHP使之能同时支持GIF和JPEG
Oct 09 PHP
PHP网站提速三大“软”招
Oct 09 PHP
php开发过程中关于继承的使用方法分享
Jun 17 PHP
PHP序列号生成函数和字符串替换函数代码
Jun 07 PHP
PHP的加密方式及原理
Jun 14 PHP
header导出Excel应用示例
Jan 24 PHP
PHP实现股票趋势图和柱形图
Feb 07 PHP
php网页版聊天软件实现代码
Aug 12 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
Apr 02 PHP
Smarty模板类内部原理实例分析
Jul 03 PHP
PHP接入微信H5支付的方法示例
Oct 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四大安全策略
2014/03/12 PHP
PHP7内核之Reference详解
2019/03/14 PHP
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
IE浏览器IFrame对象内存不释放问题解决方法
2014/08/22 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
微信JS接口大全
2016/08/25 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
2016/11/21 Javascript
React-Native做一个文本输入框组件的实现代码
2017/08/10 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
2017/12/20 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
2018/09/19 Javascript
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
轻松学习JavaScript函数中的 Rest 参数
2019/05/30 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
2019/06/26 Javascript
微信小程序 搜索框组件代码实例
2019/09/06 Javascript
Vue+ElementUI 中级联选择器Bug问题的解决
2020/07/31 Javascript
[05:16]《大圣!大圣》——DOTA2新英雄齐天大圣配音李世宏老师专访
2016/12/13 DOTA
[01:06:30]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第二场 1月9日
2021/03/11 DOTA
新手该如何学python怎么学好python?
2008/10/07 Python
Python中for循环详解
2014/01/17 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
2017/01/20 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
Django model select的多种用法详解
2019/07/16 Python
pytorch 输出中间层特征的实例
2019/08/17 Python
浅谈pytorch torch.backends.cudnn设置作用
2020/02/20 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
HTML5实践-图片设置成灰度图
2012/11/12 HTML / CSS
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
2015/07/16 面试题
应聘自荐信
2013/12/14 职场文书
材料采购员岗位职责
2013/12/17 职场文书
违反工作纪律检讨书
2014/02/15 职场文书
创业者迈进成功第一步:如何写创业计划书?
2014/03/22 职场文书
捐书仪式主持词
2015/07/04 职场文书
python process模块的使用简介
2021/05/14 Python