現在の位置: ホーム> 最新記事一覧> PHPでイメージングアップを使用して垂直テキストで透かしを描画する方法は?実際のチュートリアルはこちらです

PHPでイメージングアップを使用して垂直テキストで透かしを描画する方法は?実際のチュートリアルはこちらです

gitbox 2025-06-16

PHPでイメージングアップを使用して垂直テキストで透かしを描画する方法は?実際のチュートリアルはこちらです

画像を処理する場合、透かしは著作権を保護したり、ブランド認識を強化する一般的な方法です。 PHPは、 Imagestringup()が垂直テキストを描画する関数である画像処理の多くの機能を提供します。これは、画像に垂直透かしを追加するのに非常に適しています。今日は、PHPでImagestringup()関数を使用して垂直透かしを描く方法を説明します。

準備

まず、 Imagestringup()はGDライブラリの一部であるため、PHP環境がGDライブラリをサポートすることを確認する必要があります。 GDライブラリは、PHPで一般的に使用される画像処理ライブラリであり、通常、PHPがインストールされるときに有効にすることができます。次のコードに従って、PHPにGDライブラリが有効になっているかどうかを確認できます。

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">function_exists</span></span><span>(</span><span><span class="hljs-string">'gd_info'</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"GD library is enabled!"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"GD library is not enabled!"</span></span><span>;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

環境でGDライブラリが有効になっていない場合は、 PHP.iniファイルで有効にするか、パッケージマネージャーを使用してインストールする必要があります。

基本的な手順

垂直透かしを描画する基本的なプロセスは次のとおりです。

  1. ターゲット画像を作成またはロードします。

  2. 透かしテキスト、フォント、色などを設定します。

  3. Imagestringup()を使用して、垂直テキストを描画します。

  4. 処理された画像を出力または保存します。

コードの例

以下は画像に垂直透かしテキストを追加して画像に追加する方法を示す完全なPHPコードの例です。

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 背景画像を作成します</span></span><span>
</span><span><span class="hljs-variable">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatetruecolor</span></span><span>(</span><span><span class="hljs-number">800</span></span><span>, </span><span><span class="hljs-number">600</span></span><span>);

</span><span><span class="hljs-comment">// 背景色を選択します</span></span><span>
</span><span><span class="hljs-variable">$bg_color</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>);  </span><span><span class="hljs-comment">// 白い背景</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagefill</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-variable">$bg_color</span></span><span>);

</span><span><span class="hljs-comment">// フォントファイルをロードします</span></span><span>
</span><span><span class="hljs-variable">$font</span></span><span> = </span><span><span class="hljs-string">'./path/to/your/font.ttf'</span></span><span>; </span><span><span class="hljs-comment">// フォントファイルパスが正しいことを確認してください</span></span><span>

</span><span><span class="hljs-comment">// 透かしテキストのコンテンツを設定します</span></span><span>
</span><span><span class="hljs-variable">$watermark_text</span></span><span> = </span><span><span class="hljs-string">'Your Watermark'</span></span><span>;

</span><span><span class="hljs-comment">// フォントサイズを設定します</span></span><span>
</span><span><span class="hljs-variable">$font_size</span></span><span> = </span><span><span class="hljs-number">20</span></span><span>;

</span><span><span class="hljs-comment">// 透かしのテキストカラー(グレー)</span></span><span>
</span><span><span class="hljs-variable">$watermark_color</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>);

</span><span><span class="hljs-comment">// 透かしテキストの幅と高さを計算します</span></span><span>
</span><span><span class="hljs-variable">$bbox</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagettfbbox</span></span><span>(</span><span><span class="hljs-variable">$font_size</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-variable">$font</span></span><span>, </span><span><span class="hljs-variable">$watermark_text</span></span><span>);
</span><span><span class="hljs-variable">$watermark_width</span></span><span> = </span><span><span class="hljs-title function_ invoke__">abs</span></span><span>(</span><span><span class="hljs-variable">$bbox</span></span><span>[</span><span><span class="hljs-number">2</span></span><span>] - </span><span><span class="hljs-variable">$bbox</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>]);
</span><span><span class="hljs-variable">$watermark_height</span></span><span> = </span><span><span class="hljs-title function_ invoke__">abs</span></span><span>(</span><span><span class="hljs-variable">$bbox</span></span><span>[</span><span><span class="hljs-number">5</span></span><span>] - </span><span><span class="hljs-variable">$bbox</span></span><span>[</span><span><span class="hljs-number">3</span></span><span>]);

</span><span><span class="hljs-comment">// 垂直透かしテキストを描きます</span></span><span>
</span><span><span class="hljs-variable">$x</span></span><span> = </span><span><span class="hljs-number">50</span></span><span>;  </span><span><span class="hljs-comment">// 透かしテキストを設定しますX座標</span></span><span>
</span><span><span class="hljs-variable">$y</span></span><span> = </span><span><span class="hljs-number">100</span></span><span>; </span><span><span class="hljs-comment">// 透かしテキストを設定しますY座標</span></span><span>

</span><span><span class="hljs-comment">// 使用imagestringup垂直テキストを描きます</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagestringup</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-variable">$x</span></span><span>, </span><span><span class="hljs-variable">$y</span></span><span>, </span><span><span class="hljs-variable">$watermark_text</span></span><span>, </span><span><span class="hljs-variable">$watermark_color</span></span><span>);

</span><span><span class="hljs-comment">// 出力画像</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: image/png'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagepng</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);

</span><span><span class="hljs-comment">// 無料のメモリ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

コード解析

  1. 画像を作成する:

    • ImageCreateTrueColor()を使用して、800x600の空白のキャンバスを作成します。必要に応じて、キャンバスのサイズを調整できます。

    • 次に、 ImageColorAllocate()で白い背景を作成し、キャンバスを埋めます。

  2. フォントの読み込み:

    • この例では、TrueType Font( .TTFファイル)を使用して、フォントファイルへのパスを提供する必要があります。フォントへのパスは、相対的または絶対的なパスにすることができます。

  3. 透かしテキストを設定します:

    • Imagestringup()を介して垂直テキストを描きます。この関数のパラメーターには、画像リソース、フォントサイズ、xおよびy座標、テキストコンテンツ、テキスト色が含まれます。

  4. 透かしテキストの幅と高さを計算します。

    • 画像上に透かしを調整するために、ウォーターマークテキストの幅と高さを計算しました。 ImageTtfbbox()は、境界ボックスを含む配列を返し、テキストのサイズを計算します。

  5. 透かしを描く:

    • 最後に、 Imagestringup()を使用して、テキスト色の灰色で指定された位置で垂直テキストを描画します。

  6. 出力画像:

    • ImagePng()を使用して画像を出力します。この関数は、画像をPNG形式でブラウザに出力します。 ImageJpeg()ImageGif()など、必要に応じて他の形式を出力できます。

  7. 無料のメモリ:

    • Imagedestroy()を使用して画像リソースを解放して、メモリの漏れを避けます。

注意すべきこと

  • フォントの選択: Windowsシステムでは、システムに付属するフォントは通常.ttf形式ですが、Linuxでは、フォントファイルのパスが異なる場合があります。フォントパスが正しいことを確認してください。そうしないと、フォントがロードされません。

  • 透かしの位置: xyの座標を調整することにより、透かしの位置を調整できます。さらにコントロールが必要な場合は、テキストを描画する前に画像サイズを計算でき、透かし位置は動的に調整できます。

  • パフォーマンスの最適化:画像が大きい場合、画像処理により多くのリソースが消費されます。多数の画像を頻繁に処理する必要がある場合は、キャッシュまたは非同期処理の使用を検討してください。

要約します

Imagestringup()は、PHP GDライブラリで非常に実用的な機能であり、垂直テキストの透かしを描くために特別に使用されます。このチュートリアルでは、画像の作成から出力までの完全な手順を含む、垂直方向の透かしを作成する方法を詳しく説明します。このチュートリアルを通じてPHPで垂直テキストの透かし効果を簡単に実現し、プロジェクトで柔軟に使用できる方法を学ぶことができることを願っています。