Heim  >  Artikel  >  Backend-Entwicklung  >  Der Baidu-Editor fügt eine Bildwasserzeichenfunktion hinzu

Der Baidu-Editor fügt eine Bildwasserzeichenfunktion hinzu

*文
*文Original
2017-12-27 09:09:222231Durchsuche

Wie füge ich dem Baidu Editor eine Bildwasserzeichenfunktion hinzu? Vor ein paar Tagen habe ich den integrierten Editor von phpcms auf den Baidu UE-Editor umgestellt, der sehr einfach zu verwenden ist. Mit einer Sache bin ich jedoch nicht sehr zufrieden, nämlich, dass ich den hochgeladenen Bildern keine Wasserzeichen hinzufügen kann . Nach einiger Recherche wurde es mir endlich klar. Ich hoffe, es hilft allen.

Die vom UEditor-Editor hochgeladenen Bilder werden automatisch extrahiert, die Bilder verfügen jedoch nicht über eine Wasserzeichenfunktion. Der Editor wird unten einen Blick darauf werfen.

Der UEditor-Editor verfügt nicht über die Funktion zum Hochladen von Bildern und zum Hinzufügen von Wasserzeichen und erfordert eine sekundäre Entwicklung. In diesem Beispiel wird eine sekundäre Entwicklung des Baidu-Editors im PHPCMS-System durchgeführt und die Funktion zum Hochladen von Bildern und zum Hinzufügen von Wasserzeichen hinzugefügt .

Öffnen Sie zuerst den PHP-Ordner im Dateiverzeichnis des UEditor-Editors, öffnen Sie Uploader.class.php, kopieren Sie die PHPCMS-Methode zum Hinzufügen von Wasserzeichen, fügen Sie sie am Ende aller Mitgliedsmethoden dieser Klasse hinzu und ändern Sie sie dann wie folgt:

//图片加水印
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]));
}

Beim Vergleich der von mir geänderten Teile gilt: Da das phpcms-Wasserzeichen im Hintergrund verwaltet und festgelegt werden kann, gilt die mit phpcms gelieferte Wasserzeichenmethode Lesen Sie den Pfad durch Lesen der Konfigurationsdatei und lesen Sie die Datenbankeinstellungen, um Parametereinstellungen zu erhalten. Anschließend müssen diese Orte manuell festgelegt werden.

Fügen Sie übrigens eine Funktion in der upFile-Methode hinzu:


Kopieren Sie den Code Der Code lautet wie folgt:


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

Öffnen Sie dann die Datei action_upload.php im PHP-Verzeichnis des UEditor Baidu-Editors und fügen Sie die Parameter hinzu, ob ein Wasserzeichen hinzugefügt werden soll:

/* 上传配置 */
$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;

Dann gibt es einen Satz, der geändert werden sollte in:

/* 生成上传实例对象并完成上传 */
$up = new Uploader($fieldName, $config, $base64, $watermark);

Das ist alles. Dieser Artikel dient hauptsächlich der Bereitstellung von Ideen und Referenzen.

Verwandte Empfehlungen:

Wie bette ich tp3 in den Baidu-Editor ueditor ein?

Detaillierte Einführung in die Installation und Verwendung des PHP-UEditor-Baidu-Editors

yii2 Integrieren Sie den Baidu-Editor umeditor, yii2 integrieren Sie umeditor_PHP-Tutorial

Das obige ist der detaillierte Inhalt vonDer Baidu-Editor fügt eine Bildwasserzeichenfunktion hinzu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn