PHP根据图片色界在不同位置加水印的方法

5年以前  |  阅读数:912 次  |  编程语言:PHP 

本文实例讲述了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分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例