ホームページ  >  記事  >  バックエンド開発  >  ueditor を使用して写真をアップロードし、透かしを追加する方法について話しましょう

ueditor を使用して写真をアップロードし、透かしを追加する方法について話しましょう

青灯夜游
青灯夜游転載
2022-08-31 10:35:052972ブラウズ

ueditor を使用して写真をアップロードし、透かしを追加するにはどうすればよいですか?次の記事ではueditorを使って画像をアップロードしたりウォーターマークを追加したりする方法を紹介しますので、ぜひ参考にしてください。

ueditor を使用して写真をアップロードし、透かしを追加する方法について話しましょう

ブログに写真がアップロードされるとき、ブログのリンクに透かしを入れたいと思っています。Nuggets と CSDN はすべてこれを行っています。これは学ばなければなりません。

通常の画像アップロードで大丈夫ですが、記事編集時にueditorを使って画像をアップロードしたりウォーターマークを追加したりするには、ueditorのPHPソースコードの一部を修正する必要があるので、簡単に記録しておきます。

まず、php フォルダーの下にある Uploader.class.php を開きます。

ueditor を使用して写真をアップロードし、透かしを追加する方法について話しましょう

ファイルをアップロードするための主要な処理メソッドであるプライベート関数 upFile() を見つけます。

122 行目を見つけます: $this->stateInfo = $this->stateMap[0];

この下に追加します: $this-> ;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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。