Home  >  Article  >  Web Front-end  >  Add watermark to images uploaded to Baidu UEDITOR editor_html/css_WEB-ITnose

Add watermark to images uploaded to Baidu UEDITOR editor_html/css_WEB-ITnose

PHP中文网
PHP中文网Original
2016-06-24 11:46:04902browse


Add watermark to upload images to Baidu UEDITOR editor_html/css_WEB-ITnose

form: http://www.uphtm.com /php/255.html

The pictures uploaded by the UEDITOR editor are automatically extracted, but the pictures do not have a watermark function. The editor will take a look with you below.

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

Compared with the part 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 obtains the parameter settings by reading the database settings, then These places need to be set manually.

By the way, add a function in the upFile method:

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:

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

Then there is another sentence at the end that needs to be changed to:

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

That’s it. This article is mainly to provide ideas and reference.

form:http://www.uphtm.com/php/255.html


The above is to add watermarks to pictures uploaded to Baidu UEDITOR editor_ The content of html/css_WEB-ITnose, for more related content, please pay attention to the PHP Chinese website (www.php.cn)!







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