Home > Backend Development > PHP Tutorial > Baidu editor adds image watermark function

Baidu editor adds image watermark function

*文
Release: 2023-03-18 15:16:01
Original
2351 people have browsed it

How to add image watermark function to Baidu Editor? A few days ago, I changed the built-in editor of phpcms to Baidu UE editor, which is very easy to use. However, there is one thing that I am not very satisfied with, that is, I cannot add watermarks to uploaded pictures. After some research, I finally realized it and shared it. for everyone. I hope to be helpful.

The pictures uploaded by UEditor editor are automatically extracted, but the pictures do not have a watermark function. Let's take a look at it with you.

UEditor editor does not have the function of uploading pictures and adding watermarks, and requires secondary development. This example is to perform secondary development of the Baidu editor in the PHPCMS system and add the function of uploading pictures and adding watermarks.

First open the php folder in the UEditor editor file directory, open Uploader.class.php, copy the PHPCMS method of adding watermarks, add it to the end of all member methods of this class, and then modify it as follows:

//图片加水印
public function watermark($source, $target = '', $w_pos = '', $w_img = '', $w_text = '99danji',$w_font = 8, $w_color = '#ff0000') {
  $this->w_img = 'watermark.png';
  $this->w_pos = 9;
  $this->w_minwidth = 400;
  $this->w_minheight = 200;
  $this->w_quality = 80;
  $this->w_pct = 85;
 
  $w_pos = $w_pos ? $w_pos : $this->w_pos;
  $w_img = $w_img ? $w_img : $this->w_img;
  //if(!$this->watermark_enable || !$this->check($source)) return false;
  if(!$target) $target = $source;
  //$w_img = PHPCMS_PATH.$w_img;
  //define('WWW_PATH', dirname(dirname(dirname(__FILE__)));
  $w_img = '../../../images/water/'.$w_img;
  $source_info = getimagesize($source);
  $source_w  = $source_info[0];
  $source_h  = $source_info[1];
  //if($source_w < $this->w_minwidth || $source_h < $this->w_minheight) return false;
  switch($source_info[2]) {
    case 1 :
      $source_img = imagecreatefromgif($source);
      break;
    case 2 :
      $source_img = imagecreatefromjpeg($source);
      break;
    case 3 :
      $source_img = imagecreatefrompng($source);
      break;
    default :
      return false;
  }
  if(!empty($w_img) && file_exists($w_img)) {
    $ifwaterimage = 1;
    $water_info  = getimagesize($w_img);
    $width    = $water_info[0];
    $height    = $water_info[1];
    switch($water_info[2]) {
      case 1 :
        $water_img = imagecreatefromgif($w_img);
        break;
      case 2 :
        $water_img = imagecreatefromjpeg($w_img);
        break;
      case 3 :
        $water_img = imagecreatefrompng($w_img);
        break;
      default :
        return;
    }
  } else {    
    $ifwaterimage = 0;
    $temp = imagettfbbox(ceil($w_font*2.5), 0, PC_PATH.&#39;libs/data/font/elephant.ttf&#39;, $w_text);
    $width = $temp[2] - $temp[6];
    $height = $temp[3] - $temp[7];
    unset($temp);
  }
  switch($w_pos) {
    case 1:
      $wx = 5;
      $wy = 5;
      break;
    case 2:
      $wx = ($source_w - $width) / 2;
      $wy = 0;
      break;
    case 3:
      $wx = $source_w - $width;
      $wy = 0;
      break;
    case 4:
      $wx = 0;
      $wy = ($source_h - $height) / 2;
      break;
    case 5:
      $wx = ($source_w - $width) / 2;
      $wy = ($source_h - $height) / 2;
      break;
    case 6:
      $wx = $source_w - $width;
   $wy = ($source_h - $height) / 2;
      break;
    case 7:
      $wx = 0;
      $wy = $source_h - $height;
      break;
    case 8:
      $wx = ($source_w - $width) / 2;
      $wy = $source_h - $height;
      break;
    case 9:
      $wx = $source_w - $width;
      $wy = $source_h - $height;
      break;
    case 10:
      $wx = rand(0,($source_w - $width));
      $wy = rand(0,($source_h - $height));
      break;       
    default:
      $wx = rand(0,($source_w - $width));
      $wy = rand(0,($source_h - $height));
      break;
  }
  if($ifwaterimage) {
    if($water_info[2] == 3) {
      imagecopy($source_img, $water_img, $wx, $wy, 0, 0, $width, $height);
    } else {
      imagecopymerge($source_img, $water_img, $wx, $wy, 0, 0, $width, $height, $this->w_pct);
    }
  } else {
    if(!empty($w_color) && (strlen($w_color)==7)) {
      $r = hexdec(substr($w_color,1,2));
      $g = hexdec(substr($w_color,3,2));
      $b = hexdec(substr($w_color,5));
    } else {
      return;
    }
    imagestring($source_img,$w_font,$wx,$wy,$w_text,imagecolorallocate($source_img,$r,$g,$b));
  }
  
  switch($source_info[2]) {
    case 1 :
      imagegif($source_img, $target);
      break;
    case 2 :
      imagejpeg($source_img, $target, $this->w_quality);
      break;
    case 3 :
      imagepng($source_img, $target);
      break;
    default :
      return;
  }
 
  if(isset($water_info)) {
    unset($water_info);
  }
  if(isset($water_img)) {
    imagedestroy($water_img);
  }
  unset($source_info);
  imagedestroy($source_img);
  return true;
}
 
public function check($image) {
  return extension_loaded(&#39;gd&#39;) && preg_match("/\.(jpg|jpeg|gif|png)/i", $image, $m) && file_exists($image) && function_exists(&#39;imagecreatefrom&#39;.($m[1] == &#39;jpg&#39; ? &#39;jpeg&#39; : $m[1]));
}
Copy after login

Comparing the parts I modified, since phpcms watermark can be managed and set in the background, the watermark method that comes with phpcms obtains the path by reading the configuration file, and reads Database settings obtain parameter settings, then these places need to be set manually.

By the way, we need to add a function in the upFile method:


##Copy code The code is as follows:

if ($this->watermark) {
$this->watermark($this->filePath,$this->filePath);
}

Then open the action_upload.php file in the php directory of UEditor Baidu Editor, and add the parameters of whether to add a watermark:

/* 上传配置 */
$base64 = "upload";
switch (htmlspecialchars($_GET[&#39;action&#39;])) {
  case &#39;uploadimage&#39;:
    $config = array(
      "pathFormat" => $CONFIG[&#39;imagePathFormat&#39;],
      "maxSize" => $CONFIG[&#39;imageMaxSize&#39;],
      "allowFiles" => $CONFIG[&#39;imageAllowFiles&#39;]
    );
    $fieldName = $CONFIG[&#39;imageFieldName&#39;];
    $watermark = true;
    break;
Copy after login

Then there is another sentence at the end Change it to:

/* 生成上传实例对象并完成上传 */
$up = new Uploader($fieldName, $config, $base64, $watermark);
Copy after login
This way you’re done. This article mainly provides ideas and reference.

Related recommendations:

How to embed tp3 into Baidu editor ueditor?

Detailed introduction to the installation and use of php UEditor Baidu editor sharing

##yii2 Integrate Baidu editor umeditor, yii2 integrate umeditor_PHP tutorial

The above is the detailed content of Baidu editor adds image watermark function. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template