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 相关文章推荐
Linux下将excel数据导入到mssql数据库中的方法
Feb 08 PHP
PHP企业级应用之常见缓存技术篇
Jan 27 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
Aug 11 PHP
Session服务器配置指南与使用经验的深入解析
Jun 17 PHP
php 购物车完整实现代码
Jun 05 PHP
ThinkPHP验证码和分页实例教程
Aug 22 PHP
thinkphp文件处理类Dir.class.php的用法分析
Dec 08 PHP
php利用事务处理转账问题
Apr 22 PHP
又十个超级有用的PHP代码片段
Sep 24 PHP
php微信公众平台交互与接口详解
Nov 28 PHP
laravel实现前后台路由分离的方法
Oct 13 PHP
Laravel框架Blade模板简介及模板继承用法分析
Dec 03 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 高手之路(三)
2006/10/09 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
2015/04/08 PHP
PHP图像处理类库MagickWand用法实例分析
2015/05/21 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
2016/10/20 PHP
JQuery Tab选项卡效果代码改进版
2010/04/01 Javascript
url参数中有+、空格、=、%、&、#等特殊符号的问题解决
2013/05/15 Javascript
extjs 分页使用jsp传递数据示例
2014/07/29 Javascript
javascript检测是否联网的实现代码
2014/09/28 Javascript
Vue.js仿Metronic高级表格(二)数据渲染
2017/04/19 Javascript
JavaScript异步上传图片文件的实例代码
2017/07/04 Javascript
JavaScript中正则表达式使数字、中文或指定字符高亮显示
2017/10/31 Javascript
VSCode 配置React Native开发环境的方法
2017/12/27 Javascript
微信小程序签到功能
2018/10/31 Javascript
koa2实现登录注册功能的示例代码
2018/12/03 Javascript
vue滚动插件better-scroll使用详解
2019/10/18 Javascript
Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法
2020/05/26 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
vue.js+element 默认提示中英文操作
2020/11/11 Javascript
[49:05]OG vs Newbee 2019DOTA2国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
2017/10/01 Python
python处理DICOM并计算三维模型体积
2019/02/26 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
Django框架之登录后自定义跳转页面的实现方法
2019/07/18 Python
python @classmethod 的使用场合详解
2019/08/23 Python
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
2019/11/15 Python
python实现企业微信定时发送文本消息的实例代码
2020/11/25 Python
css实例教程 一款纯css3实现的超炫动画背画特效
2014/11/05 HTML / CSS
《识字五》教学反思
2014/03/01 职场文书
小学教师培训方案
2014/06/09 职场文书
离婚协议书怎么写2014
2014/09/30 职场文书
表彰大会新闻稿
2015/07/17 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书
创业计划书之个人工作室
2019/08/22 职场文书
python基于tkinter实现gif录屏功能
2021/05/19 Python
Golang Web 框架Iris安装部署
2022/08/14 Python