首頁 >後端開發 >php教程 >聊聊如何使用ueditor上傳圖片加浮水印

聊聊如何使用ueditor上傳圖片加浮水印

青灯夜游
青灯夜游轉載
2022-08-31 10:35:053026瀏覽

如何用ueditor上傳圖片加浮水印?以下這篇文章為大家介紹一下使用ueditor上傳圖片加浮水印的方法,希望對大家有幫助!

聊聊如何使用ueditor上傳圖片加浮水印

部落格上傳圖片的時候,我希望能打上我部落格連結的水印,掘金,csdn都是這麼幹的,這事我得學習。

平常的圖片上傳還好說,在文章編輯的時候,使用ueditor上傳圖片加浮水印需要修改ueditor部分PHP的源碼,我這裡大概記錄一下。

先開啟php資料夾下的Uploader.class.php

聊聊如何使用ueditor上傳圖片加浮水印

#找到private function upFile(),這是上傳檔案的主處理方法,

找到122行:$this->stateInfo = $this->stateMap[0];

在這個下面加入:$this-&gt ;imageWaterMark($this->filePath,9,'logo.png');

 imageWaterMark是自訂的函數,

在下面會說到,$this- >filePath 這是上傳圖片的路徑,9 表示的是浮水印的位置,在右下角,logo.png這個就是你要加入的浮水印圖片了,這個在同一目錄下/php/,如果要放到其它路徑請用相對路徑。

聊聊如何使用ueditor上傳圖片加浮水印

下面這個就是自訂函數了,加入到Uploader 類別中 所有的參數都已在函數註解中說明,呼叫的時候需要注意一下

/*
    * 功能:PHP图片水印 (水印支持图片或文字)
    * 参数:
    
    *$groundImage 背景图片,即需要加水印的图片,暂只支持GIF,JPG,PNG格式;
    
    *$waterPos水印位置,有10种状态,0为随机位置;
    
    *1为顶端居左,2为顶端居中,3为顶端居右;
    *4为中部居左,5为中部居中,6为中部居右;
    *7为底端居左,8为底端居中,9为底端居右;
    
    *$waterImage图片水印,即作为水印的图片,暂只支持GIF,JPG,PNG格式;
    
    *$waterText文字水印,即把文字作为为水印,支持ASCII码,不支持中文;
    
    *$textFont文字大小,值为1、2、3、4或5,默认为5;
    
    *$textColor文字颜色,值为十六进制颜色值,默认为#FF0000(红色);
    
    * 注意:Support GD 2.0,Support FreeType、GIF Read、GIF Create、JPG 、PNG
    
    *$waterImage 和 $waterText 最好不要同时使用,选其中之一即可,优先使用 $waterImage。
    
    *当$waterImage有效时,参数$waterString、$stringFont、$stringColor均不生效。
    
    *加水印后的图片的文件名和 $groundImage 一样。
    */
    private function imageWaterMark($groundImage,$waterPos=0,$waterImage="",$waterText="",$textFont=5,$textColor="#FF0000")
    {
        $isWaterImage = FALSE;
        $formatMsg = "暂不支持该文件格式,请用图片处理软件将图片转换为GIF、JPG、PNG格式。";
        //读取水印文件
        if(!empty($waterImage) && file_exists($waterImage))
        {
            $isWaterImage = TRUE;
            $water_info = getimagesize($waterImage);
            $water_w = $water_info[0];//取得水印图片的宽
            $water_h = $water_info[1];//取得水印图片的高 
            switch($water_info[2])//取得水印图片的格式
            {
                case 1:$water_im = imagecreatefromgif($waterImage);break;
                case 2:$water_im = imagecreatefromjpeg($waterImage);break;
                case 3:$water_im = imagecreatefrompng($waterImage);break;
                default:die($formatMsg);
            }
        }
        //读取背景图片
        if(!empty($groundImage) && file_exists($groundImage))
        {
            $ground_info = getimagesize($groundImage);
            $ground_w = $ground_info[0];//取得背景图片的宽
            $ground_h = $ground_info[1];//取得背景图片的高
            switch($ground_info[2])//取得背景图片的格式
            {
                case 1:$ground_im = imagecreatefromgif($groundImage);break;
                case 2:$ground_im = imagecreatefromjpeg($groundImage);break;
                case 3:$ground_im = imagecreatefrompng($groundImage);break;
                default:die($formatMsg);
            }
        }
        else
        {
            die("需要加水印的图片不存在!");
        }
        //水印位置
        if($isWaterImage)//图片水印
        {
            $w = $water_w;
            $h = $water_h;
            $label = "图片的";
        }
        else//文字水印
        {
            $temp = imagettfbbox(ceil($textFont*5),0,"./cour.ttf",$waterText);//取得使用 TrueType 字体的文本的范围
            $w = $temp[2] - $temp[6];
            $h = $temp[3] - $temp[7];
            unset($temp);
            $label = "文字区域";
        }
        if( ($ground_w<p>好啦,這個就好用了。上傳圖片加浮水印就好了。 </p><p>請注意:浮水印功能需要用到GD庫模組,請檢查下php是否安裝了GD庫模組。 </p><p>推薦學習:《<a href="https://www.php.cn/course/list/29/type/2.html" target="_blank">PHP影片教學</a>》</p>

以上是聊聊如何使用ueditor上傳圖片加浮水印的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:juejin.cn。如有侵權,請聯絡admin@php.cn刪除