画像処理にPHPを使用する場合、GDライブラリはさまざまな効果を達成するために豊富な機能を提供します。 imagettftext()を使用して画像上のTrueTypeフォントにテキストを描画でき、 ImageColorallocatealpha()には透明性のある色を割り当てることができます。これら2つの関数を組み合わせて使用すると、画像に透明な効果を備えたテキストを追加できます。
この記事では、例を使用して、この効果を達成する方法を示します。
まず、キャンバスを作成する必要があります。ここでは、imageCreatetruecolor()を使用して、真の色の画像を作成します。
<?php
// 写真を作成します 400x200 キャンバス
$width = 400;
$height = 200;
$image = imagecreatetruecolor($width, $height);
// 背景に白を割り当てます
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);
ImageColorallocatealpha()の4番目のパラメーターは、透明性を表し、値は0(完全に不透明)から127(完全に透明)の範囲です。
// 赤を割り当てます,50% 透明性(ほぼ等しい alpha = 63)
$red_alpha = imagecolorallocatealpha($image, 255, 0, 0, 63);
imagettftext()を使用して、キャンバスにテキストを描画します。 TTFフォントファイルへのパスを提供する必要があります。
// フォントファイルパス
$font_path = __DIR__ . '/arial.ttf';
// キャンバスにテキストを書きます
imagettftext(
$image, // 画像リソース
30, // フォントサイズ
0, // 角度
50, // X 座標
100, // Y 座標(ベースラインの場所)
$red_alpha, // 色(带透明性)
$font_path, // フォントファイルパス
'Hello, m66.net!' // 書かれるテキスト
);
透明性のPNG画像を出力するには、透明な色を設定し、PNG形式に出力する必要があります。
// 開ける alpha チャネルミキシング
imagesavealpha($image, true);
// 出力ヘッダーを設定します
header('Content-Type: image/png');
// 出力画像
imagepng($image);
// リソースを破壊します
imagedestroy($image);
?>
GDライブラリがサーバーにインストールされており、TrueTypeフォントのサポートがPHP.iniで有効になっていることを確認してください。
ImageColorallocatealpha()の透明度値が127になるほど、効果はより透明になります。
ImagePng()出力を使用する場合、透明チャネルをよりよく保存できます。