PHP根据图片色界在不同位置加水印的方法
author:一佰互联 2019-04-28   click:171

本文实例讲述了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程序设计有所帮助。