Home  >  Article  >  Backend Development  >  PHP adds watermark based on the color area position of the picture

PHP adds watermark based on the color area position of the picture

*文
*文Original
2017-12-27 11:27:171886browse

How to add watermark based on the color area position of the picture in PHP? This article mainly introduces PHP's method of adding watermarks at different locations according to the color boundary of the picture, which can realize the dynamic addition function of picture watermark according to the color environment. I hope to be helpful.

The specific implementation method is as follows:


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);

Related recommendations:

## Baidu Editor Add image watermark function

php encapsulation class for adding, compressing and cutting image watermark

php implementation process of adding watermark to images

The above is the detailed content of PHP adds watermark based on the color area position of the picture. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn