ホームページ バックエンド開発 PHPチュートリアル ckeditor でアップロードされたファイルの名前を変更してウォーターマークを追加する方法_PHP チュートリアル

ckeditor でアップロードされたファイルの名前を変更してウォーターマークを追加する方法_PHP チュートリアル

Jul 13, 2016 pm 04:57 PM
ckeditor アップロード 導入 使用 について 追加 同級生 存在する 書類 記事 方法 透かし 構成 重命名

この記事では、ckeditor を使用してファイルをアップロードするための名前変更とウォーターマークの追加の設定を紹介します。詳しく知りたい学生は参照してください。


第一に: アップロードされたファイルを日付に基づいてフォルダーに整理したいです

editoreditorfilemanagerconnectorsphp フォルダー内の config.php ファイルを変更してください

次のものが見つかりました:

コードは次のとおりです コードをコピー

// ドキュメントルートを基準としたユーザーファイルへのパス。

$Config['ユーザーファイルパス'] =

次のように変更されました:

コードは次のとおりです コードをコピー

// ドキュメントルートを基準としたユーザーファイルへのパス。

$Config['UserFilesPath'] = '/uploadfiles/'.date("Ym")."/" ;

アップロードされたファイルは日付に従って保存されます。

2 番目: 名前を変更します

このフォルダー内のio.phpファイルを変更してください

見つかりました:

コードは次のとおりです コードをコピー

// 起こり得る問題を回避するために、ファイル名のクリーンアップを実行します

関数 SanitizeFileName( $sNewFileName )

{

グローバル $Config ;

$sNewFileName = ストリップスラッシュ( $sNewFileName ) ;

// 名前のドットをアンダースコアに置き換えます (ドットは 1 つだけ使用できます...セキュリティ上の問題)。

if ( $Config['ForceSingleExtension'] )

$sNewFileName = preg_replace( '/.(?![^.]*$)/', '_', $sNewFileName ) ;

// / : ? " < >

を削除します

$sNewFileName = preg_replace( '/\|/|||:|?|*|"|<|>/', '_', $sNewFileName );

$sNewFileName を返します ;

}

次のように変更されました:

コードは次のとおりです コードをコピー

// 起こり得る問題を回避するために、ファイル名のクリーンアップを実行します

関数 SanitizeFileName( $sNewFileName )

{

グローバル $Config ;

$sNewFileName = ストリップスラッシュ( $sNewFileName ) ;

// 名前のドットをアンダースコアに置き換えます (ドットは 1 つだけ使用できます...セキュリティ上の問題)。

if ( $Config['ForceSingleExtension'] )

$sNewFileName = preg_replace( '/.(?![^.]*$)/', '_', $sNewFileName ) ;

$sExtension = substr( $sNewFileName, ( strrpos($sNewFileName, '.') + 1 ) ) ;

$sNewFileName = my_setfilename().'.'.$sExtension;

$sNewFileName を返します ;

}

関数 my_setfilename(){

$gettime =explode(' ',microtime());

$string = 'abcdefghijklmnopgrstuvwxyz0123456789';

$ランド = '';

($x=0;$x

$rand .= substr($string,mt_rand(0,strlen($string)-1),1);

return date("ymdHis").substr($gettime[0],2,6).$rand;

}


Fckeditorでアップロードした際に画像ファイル名が重複したり中国語名が文字化けする問題を解決する方法

テストの結果、Fckeditor 2.6.6 では、アップロードされたファイルの中国語名が文字化けする問題は解決されませんでした。これは、Fckeditor がアップロード機能を実装するときにファイルの名前を変更しなかったため、名前の重複と文字化けの問題が発生しやすかったためです。アップロードされた画像ファイルの文字。

名前が重複して文字化けした画像ファイルをアップロードする場合の解決方法は以下の通りです

editor/filemanager/connectors/php ディレクトリにある Commands.php を開き、

で FileUpload 関数を見つけます。
コードは次のとおりです コードをコピー

$sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ;
$sExtension = strto lower( $sExtension ) ;


の後に追加されました $sFileName = rand(0,100).".".$sExtension;

ここでの rand 関数は、必要に応じて名前変更ルールを変更できます。
アップロードした画像のファイル名が文字化けした場合のもう一つの解決策は、iconv関数を使ってファイル名を変換することですが、それでも名前が重複する問題があるため、アップロードした画像のファイル名をFckeditorに変更するのが最善です。

Fckeditorは写真をアップロードして透かし機能を追加します

ウェブサイトの所有者にとって、画像の著作権を保護し、透かしを追加することは不可欠です。PHP 透かし機能と Fckeditor ファイルアップロード機能 FileUpload を組み合わせて画像透かし機能を実装できます。詳しくは、PHP 画像透かし機能を参照してください。機能: 記事に画像とテキストを追加します。

コードは次のとおりです コードをコピー

関数 setWater($imgSrc,$markImg,$markText,$TextColor,$markPos,$fontType,$markType)
{

$srcInfo = @getimagesize($imgSrc);
    $srcImg_w = $srcInfo[0];
    $srcImg_h = $srcInfo[1];
       
    スイッチ ($srcInfo[2])
    {
        ケース 1:
            $srcim =imagecreatefromgif($imgSrc);
            壊す;
        ケース 2:
            $srcim =imagecreatefromjpeg($imgSrc);
            壊す;
        ケース 3:
            $srcim =imagecreatefrompng($imgSrc);
            壊す;
        デフォルト:
            die("サポートされていない画像ファイルの種類");
            出口;
    }
       
    if(!strcmp($markType,"img"))
    {
        if(!file_exists($markImg) || empty($markImg))
        {
            戻ります;
        }
           
        $markImgInfo = @getimagesize($markImg);
        $markImg_w = $markImgInfo[0];
        $markImg_h = $markImgInfo[1];
           
        if($srcImg_w < $markImg_w || $srcImg_h < $markImg_h)
        {
            戻ります;
        }
           
        スイッチ ($markImgInfo[2])
        {
            ケース 1:
                $markim =imagecreatefromgif($markImg);
                壊す;
            ケース 2:
                $markim =imagecreatefromjpeg($markImg);
                壊す;
            ケース 3:
                $markim =imagecreatefrompng($markImg);
                壊す;
            デフォルト:
                die("サポートされていない水印画像ファイルの種類");
                出口;
        }
           
        $logow = $markImg_w;
        $logoh = $markImg_h;
    }
       
    if(!strcmp($markType,"text"))
    {
        $fontSize = 16;
        if(!empty($markText))
        {
            if(!file_exists($fontType))
            {
                戻ります;
            }
        }
        他に{
            戻ります;
        }
           
        $box = @imagettfbbox($fontSize, 0, $fontType,$markText);
        $logow = max($box[2], $box[4]) - min($box[0], $box[6]);
        $logoh = max($box[1], $box[3]) - min($box[5], $box[7]);
    }
       
    if($markPos == 0)
    {
        $markPos = rand(1, 9);
    }
       
    スイッチ($markPos)
    {
        ケース1:
            $x = +5;
            $y = +5;
            休憩;
        ケース 2:
            $x = ($srcImg_w - $logow) / 2;
            $y = +5;
            休憩;
        ケース 3:
            $x = $srcImg_w - $logow - 5;
            $y = +15;
            休憩;
        ケース4:
            $x = +5;
            $y = ($srcImg_h - $logoh) / 2;
            休憩;
        ケース5:
            $x = ($srcImg_w - $logow) / 2;
            $y = ($srcImg_h - $logoh) / 2;
            休憩;
        ケース6:
            $x = $srcImg_w - $logow - 5;
            $y = ($srcImg_h - $logoh) / 2;
            休憩;
        ケース7:
            $x = +5;
            $y = $srcImg_h - $logoh - 5;
            休憩;
        ケース8:
            $x = ($srcImg_w - $logow) / 2;
            $y = $srcImg_h - $logoh - 5;
            休憩;
        ケース9:
            $x = $srcImg_w - $logow - 5;
            $y = $srcImg_h - $logoh -5;
            休憩;
        デフォルト:
            die("この位置はサポートされていません");
            終了します;
    }
       
    $dst_img = @imagecreatetruecolor($srcImg_w, $srcImg_h);
       
    imagecopy ( $dst_img, $srcim, 0, 0, 0, 0, $srcImg_w, $srcImg_h);
       
    if(!strcmp($markType,"img"))
    {
        imagecopy($dst_img, $markim, $x, $y, 0, 0, $logow, $logoh);
        imagedestroy($markim);
    }
       
    if(!strcmp($markType,"text"))
    {
        $rgb =explode(',', $TextColor);
           
        $color = imagecolorallocate($dst_img, $rgb[0], $rgb[1], $rgb[2]);
        imagettftext($dst_img, $fontSize, 0, $x, $y, $color, $fontType,$markText);
    }
       
    スイッチ ($srcInfo[2])
    {
        ケース1:
            imagegif($dst_img, $imgSrc);
            壊す;
        ケース 2:
            imagejpeg($dst_img, $imgSrc);
            壊す;
        ケース 3:
            imagepng($dst_img, $imgSrc);
            休憩;
        デフォルト:
            die("サポートされていない水印画像ファイルの種類");
            出口;
    }
       
    imagedestroy($dst_img);
    imagedestroy($srcim);
}

$imgSrc: ターゲット画像、相対ディレクトリアドレスを持つことができます、
$markImg: 透かし画像。相対ディレクトリ アドレスを指定でき、PNG 形式と GIF 形式の両方をサポートします。たとえば、透かし画像が実行可能ファイルの mark ディレクトリにある場合、mark/mark.gif
のように記述できます。 $markText: 画像に追加された透かしテキスト
$TextColor: 透かしテキストのフォントの色
$markPos: 画像のウォーターマークを追加する位置、値の範囲: 0~9
0: ランダムな位置、1~8 の位置をランダムに選択します
1: 左上 2: 中央上 3: 右上 4: 左中央
5: 写真の中央 6: 右の中央 7: 下の中央 8: 下の中央 9: 下の中央
$fontType: 特定のフォント ライブラリ。相対ディレクトリ アドレスを持つことができます
$markType: 画像にウォーターマークを追加する方法。img は画像としてウォーターマークを追加することを意味し、text はテキストとしてウォーターマークを追加することを意味します

コードコメント:

4~6行目: 対象画像の幅と高さを取得します
8~22行目: 画像の種類に応じて異なる関数を呼び出して操作画像の識別子を取得します

GetImageSize 関数の知識ポイント: GetImageSize は GD をインストールせずに使用でき、戻り値の配列には 4 つの要素があります。インデックス値 0 は画像の高さです。インデックス値 1 は画像の幅です。インデックス値 2 は画像のファイル形式で、値 1 は GIF 形式、2 は JPEG/JPG 形式、3 は PNG 形式です。インデックス値 3 は、画像の高さと幅の文字列、高さ=xxx 幅=yyy です。返される画像の幅と高さの単位はピクセルです

24~58行目:対象画像に透かしを追加する画像方法を選択する際に、透かし画像(通常はWebサイトのロゴ)の幅と高さを取得します。対象画像の幅または高さが透かし画像より小さい場合、または透かし画像が存在しない場合は、この機能を抜けてください。

Return ステートメントの知識ポイント: 直接リターンとは、何も返さずに関数を直接終了することを意味します。 NULL を返すとも解釈できます。

60~77行目: ターゲット画像に透かしを追加するテキスト方法を選択するとき、最初に透かしテキストのサイズを設定します。デフォルトでは、フォントサイズを16pxに設定します。フォント ファイルが存在しない場合は、関数を抜けて、最後に imagettfbbox 関数を使用してこの形式のテキストの仮想長さと幅を取得します。

imagettfbbox 関数の知識ポイント: この関数は、テキスト フレームの 4 隅を表す 8 つのセルを含む配列を返します。インデックス値の意味: 0 は左下隅の X 位置を表し、1 は座っている位置の Y 位置を表します。角、2 は右下角の X 位置、3 は右下角の Y 位置、4 は右上角の X 位置、5 は右上角の Y 位置、6 は X を表しますは左上隅の位置、7 は左上隅の Y 位置を表します。この関数には、GD ライブラリと FreeType ライブラリの両方のサポートが必要です
max 関数はパラメータの中で最大の値を返します。

79~125行目:設定された画像の透かし位置に基づいて特定の座標値を計算します。効果に応じて透かし位置を調整できます。

127~129行目:対象画像と同じサイズの新規画像を作成します。

注: imagecreatetruecolor 関数の範囲は黒い画像であるため、ターゲット画像が透明な場合、生成される新しい画像は透明ではありません。

131~162行目:画像やテキストを元に、最終的に透かし入りの画像を生成します。

電話の手順:

それを関数呼び出しとして呼び出すだけです。もちろん、クラスにカプセル化することも、必要に応じてこの関数をさらにモジュールに分割することもできます。もちろん、今このまま使っても問題ありませんので、安心して使ってください。

その他の指示:

imagettftext 関数と imagettfbbox 関数は GD ライブラリと FreeType ライブラリのサポートを必要とするため、動作環境が GD ライブラリと FreeType ライブラリをサポートしていない場合は、imagettftext 関数を使用してテキスト モードを追加できます。画像にテキストの透かしを追加し、次のように設定します。テキスト モードの $logow および $logoh の値で十分です。

imagejpeg関数では、合成画像の品質も設定できます。

PHP画像透かし機能のアイデアのまとめ:
まず、ターゲット画像、透かし画像、テキストの幅と高さを計算し、次に特定の位置に基づいて最終的な透かしが表示される位置情報、つまり X 値と Y 値を計算します。最後に、写真が結合され、新しい写真に透かしが追加されます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/631534.html技術記事この記事では、ckeditor を使用してファイルをアップロードするための名前変更とウォーターマークの追加の設定を紹介します。詳しく知りたい学生は参照してください。 まず第一に、アップロードしたいファイルは日付に基づいています...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

トマト無料小説アプリで小説を書く方法. トマトノベルで小説を書く方法に関するチュートリアルを共有します。 トマト無料小説アプリで小説を書く方法. トマトノベルで小説を書く方法に関するチュートリアルを共有します。 Mar 28, 2024 pm 12:50 PM

トマト ノベルは非常に人気のある小説閲覧ソフトウェアです。トマト ノベルでは、新しい小説や漫画を読むことができます。どの小説も漫画もとても面白いです。小説を書きたい友達もたくさんいます。お小遣いを稼いで、小説の内容を編集することもできます。 「テキストに文章を書きたいです。それで、小説はどうやって書くのですか?友達は知らないので、一緒にこのサイトに行きましょう。小説の書き方の入門を少し見てみましょう。」 Tomato Novels を使用して小説を書く方法に関するチュートリアルを共有します。 1. まず、携帯電話で Tomato Free Novels アプリを開き、パーソナル センター - ライター センターをクリックします。 2. Tomato Writer Assistant ページに移動し、次の場所で [新しい本の作成] をクリックします。小説の終わり

WeChat で削除された連絡先を回復する方法 (簡単なチュートリアルでは、削除された連絡先を回復する方法について説明します) WeChat で削除された連絡先を回復する方法 (簡単なチュートリアルでは、削除された連絡先を回復する方法について説明します) May 01, 2024 pm 12:01 PM

残念ながら、WeChat は広く使用されているソーシャル ソフトウェアであり、何らかの理由で特定の連絡先を誤って削除してしまうことがよくあります。ユーザーがこの問題を解決できるように、この記事では、削除された連絡先を簡単な方法で取得する方法を紹介します。 1. WeChat の連絡先削除メカニズムを理解します。これにより、削除された連絡先を取得できるようになります。WeChat の連絡先削除メカニズムでは、連絡先がアドレス帳から削除されますが、完全には削除されません。 2. WeChat の組み込みの「連絡先帳復元」機能を使用します。WeChat には、この機能を通じて以前に削除した連絡先をすばやく復元できる「連絡先帳復元」機能が用意されています。 3. WeChat 設定ページに入り、右下隅をクリックし、WeChat アプリケーション「Me」を開き、右上隅にある設定アイコンをクリックして設定ページに入ります。

win11 24H2 の右下隅にある評価版のウォーターマークを削除する方法 win11 の右下隅にある評価版のウォーターマークを削除するためのヒント win11 24H2 の右下隅にある評価版のウォーターマークを削除する方法 win11 の右下隅にある評価版のウォーターマークを削除するためのヒント Jun 01, 2024 pm 09:52 PM

win1124H2 の右下隅にある評価コピーのテキストを削除するにはどうすればよいですか?システムを使用すると、デスクトップの画面の右下隅に透明な透かしが表示される場合がありますが、この透明な透かしを削除するにはどうすればよいでしょうか。ユーザーはサードパーティ製ソフトウェアを直接使用して操作できます。このサイトでは、win1124H2 評価版のウォーターマークを削除する方法をユーザーに丁寧に紹介します。 win1124H2評価版のウォーターマークを削除するには、UniversalWatermarkDisablerツールをダウンロードして実行すると、現在のシステムバージョンとウォーターマークのステータスが表示され、「ステータス」に「インストール準備完了」と表示されていれば削除できます。

WPSでウォーターマークを編集する方法の紹介 WPSでウォーターマークを編集する方法の紹介 Mar 27, 2024 pm 02:06 PM

1. WPS を使用してドキュメントを開きます。ウォーターマークが入っています。汚く見えます。削除するにはどうすればよいですか?下を見てください。 2. メニュー バーで [挿入] タブを見つけ、このタブの下にあるヘッダー アイコンとフッター アイコンを選択し、マウスの左ボタンでクリックします。 3. このとき、ページ上の文字は灰色になり編集できませんが、文字裏のウォーターマークはこの時点で編集可能です。 4. 透かしをクリックすると、画像の周りにいくつかの小さな四角があるため、これが画像の透かしであることがわかります。この時点で画像を編集できます。 5. キーボードの削除キーを使用して画像を削除すると、透かしが消えていることがわかります。 6. ページ上でマウスをダブルクリックしてヘッダーとフッターの編集モードを終了すると、ページ上のテキストが通常の色に戻り、編集できるようになりますが、この時点ではページ上の透かしが消えています。 7。

モバイルドラゴンの卵を孵化させる秘密が明らかに(モバイルドラゴンの卵をうまく孵化させる方法を段階的に教えます) モバイルドラゴンの卵を孵化させる秘密が明らかに(モバイルドラゴンの卵をうまく孵化させる方法を段階的に教えます) May 04, 2024 pm 06:01 PM

テクノロジーの発展に伴い、モバイルゲームは人々の生活に欠かせないものになりました。かわいいドラゴンエッグの画像と面白い孵化過程で多くのプレイヤーの注目を集めており、その中でも注目を集めているゲームの一つがモバイル版ドラゴンエッグです。プレイヤーがゲーム内で自分のドラゴンをより適切に育成し成長させることができるように、この記事ではモバイル版でドラゴンの卵を孵化させる方法を紹介します。 1. 適切な種類のドラゴン エッグを選択する プレイヤーは、ゲーム内で提供されるさまざまな種類のドラゴン エッグの属性と能力に基づいて、自分に適したドラゴン エッグの種類を慎重に選択する必要があります。 2. 孵化機のレベルをアップグレードします。プレイヤーはタスクを完了し、小道具を収集することで孵化機のレベルを向上させる必要があります。孵化機のレベルは孵化速度と孵化成功率を決定します。 3. プレイヤーはゲームに参加する必要がある孵化に必要なリソースを収集します。

NetEase メールボックス マスターの使用方法 NetEase メールボックス マスターの使用方法 Mar 27, 2024 pm 05:32 PM

NetEase Mailbox は、中国のネットユーザーに広く使用されている電子メール アドレスとして、その安定した効率的なサービスで常にユーザーの信頼を獲得してきました。 NetEase Mailbox Master は、携帯電話ユーザー向けに特別に作成された電子メール ソフトウェアで、電子メールの送受信プロセスが大幅に簡素化され、電子メールの処理がより便利になります。 NetEase Mailbox Master の使い方と具体的な機能について、以下ではこのサイトの編集者が詳しく紹介しますので、お役に立てれば幸いです。まず、モバイル アプリ ストアで NetEase Mailbox Master アプリを検索してダウンロードします。 App Store または Baidu Mobile Assistant で「Ne​​tEase Mailbox Master」を検索し、画面の指示に従ってインストールします。ダウンロードとインストールが完了したら、NetEase の電子メール アカウントを開いてログインします。ログイン インターフェイスは次のとおりです。

Baidu Netdisk アプリの使用方法 Baidu Netdisk アプリの使用方法 Mar 27, 2024 pm 06:46 PM

クラウド ストレージは今日、私たちの日常生活や仕事に欠かせない部分になっています。中国有数のクラウド ストレージ サービスの 1 つである Baidu Netdisk は、強力なストレージ機能、効率的な伝送速度、便利な操作体験により多くのユーザーの支持を得ています。また、重要なファイルのバックアップ、情報の共有、オンラインでのビデオの視聴、または音楽の聴きたい場合でも、Baidu Cloud Disk はニーズを満たすことができます。しかし、Baidu Netdisk アプリの具体的な使用方法を理解していないユーザーも多いため、このチュートリアルでは Baidu Netdisk アプリの使用方法を詳しく紹介します。まだ混乱しているユーザーは、この記事に従って詳細を学ぶことができます。 Baidu Cloud Network Disk の使用方法: 1. インストール まず、Baidu Cloud ソフトウェアをダウンロードしてインストールするときに、カスタム インストール オプションを選択してください。

携帯電話の文字サイズの設定方法(携帯電話の文字サイズを簡単に調整できます) 携帯電話の文字サイズの設定方法(携帯電話の文字サイズを簡単に調整できます) May 07, 2024 pm 03:34 PM

携帯電話が人々の日常生活において重要なツールになるにつれて、フォント サイズの設定は重要なパーソナライゼーション要件になりました。さまざまなユーザーのニーズを満たすために、この記事では、簡単な操作で携帯電話の使用体験を向上させ、携帯電話のフォントサイズを調整する方法を紹介します。携帯電話のフォント サイズを調整する必要があるのはなぜですか - フォント サイズを調整すると、テキストがより鮮明で読みやすくなります - さまざまな年齢のユーザーの読書ニーズに適しています - フォント サイズを使用すると、視力の悪いユーザーにとって便利です携帯電話システムの設定機能 - システム設定インターフェイスに入る方法 - 設定インターフェイスで「表示」オプションを見つけて入力します。 - 「フォント サイズ」オプションを見つけて、サードパーティでフォント サイズを調整します。アプリケーション - フォント サイズの調整をサポートするアプリケーションをダウンロードしてインストールします - アプリケーションを開いて、関連する設定インターフェイスに入ります - 個人に応じて

See all articles