ホームページ >バックエンド開発 >PHPチュートリアル >PHP は画像に透かし効果を追加する実装、_PHP チュートリアル
phpは画像に透かし効果を追加できます
リーリー画像とテキストの 2 つの方法で画像に透かしを追加することをサポートする別の方法を見てみましょう。画像は GIF、PNG、JPG の 3 つの形式をサポートしています。透かし画像は PNG と GIF をサポートしています
。 リーリーパラメータの説明:
$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関数では、合成画像の品質も設定できます。