ホームページ  >  記事  >  バックエンド開発  >  PHP を使用して動的な画像を生成する方法を学びます

PHP を使用して動的な画像を生成する方法を学びます

WBOY
WBOYオリジナル
2016-08-08 09:33:591060ブラウズ

多くの人は、php が HTML 以外のデータを生成できることを知りません。これは、データベースから単純な広告の水平方向の画像を生成したり、単純にグラフィック ボタンを生成したりするのに非常に便利です。
以下の例では TTF フォントを使用しました
私は通常、「button.php3」という名前を付けます:

############################################## ## ###
-----button.php3------

############################################## ## ###
このファイルには HTML タグを含めないことが非常に重要です。 タグの前後に空白行を含めることはできません。 PHP タグの外側に入力ミスされた文字

上記のスクリプトは、次の構文を使用して Web ページで呼び出すことができます:
############################################## ## ###
----test.php-----


新しいページ 1



############################################## ## ###

test.php の結果は次のようになります:

's' パラメータはフォント サイズを設定します。
これは s=18 の場合です:

注I:
フォント パス「/fonts/TIMES.TTF」は、windows/fonts ディレクトリから取得できます。TIMS.TTF フォント ファイルを Web サイトのフォント ディレクトリにコピーすることでテストできます。中国語のパフォーマンスについては、ネチズンはまだわかっていません。フィードバックを提供するため

最初に黒い正方形の領域を描画し、次に白いディスプレイスメントを使用して 3D 効果を作成したことに注意してください。L メソッドは明るい背景でも見ることができますが、背景色を暗い色に変更しても同じ効果を確認できます。フォントに立体感を表現するエフェクトが施されています

まず、PHP インストールが GD と TTF をサポートするように設定されていることを確認する必要があります。PHP FAQ を参照してください。libgd.a を /usr/local/lib にコピーし、gd*.h 関連ファイルを /usr/local にコピーすることをお勧めします。 /include それでは
FreeTTF ライブラリの「make install」

Chai httf フォントは http://rover.wiesbaden.netsurf.de/~kikita/ で見つけることができます
!
注:

以下のソースコードは、上記の弁を改善して複数行のテキストを表示できるようにします。 ############################################## ## ###
---------------button.php-----------------
Header("コンテンツタイプ: 画像/jpeg"); if(!isset($bgred)) $bgred=0; if(!isset($bggreen)) $bggreen=51; if(!isset($bgblue)) $bgblue=153; if(!isset($chred)) $chred=255; if(!isset($chgreen)) $chgreen=255; if(!isset($chblue)) $chblue=255; if(!isset($shadow)) $shadow="はい"; if(!isset($wrappos)) $wrappos=20; if(!isset($crop)) $crop=2.2; if(!isset($jpegquality)) $jpegquality=80; if(!isset($s)) $s=11; $savetext=$text
$text=Wordwrap($text,$wrappos," ",0); if (!isset($font)) $fontname="/www/ttfonts/arialbd.ttf"; それ以外は
$fontname="/www/ttfonts/".$font.".ttf"; $size = imagettfbbox($s,0,$fontname,$text); $dx = abs($size[2]-$size[0]); $dy = abs($size[5]-$size[3]); $upper=abs($size[5]); $under=$size[1]
; $th=$upper-$under
$xpad=9; if (substr_count($text,chr(13))>=1)
{
$mult=(substr_count($text,chr(13))); $ypad=($mult*$crop*$s)+$s; }
それ以外の場合は $ypad=($crop-2)*$s; $im = imagecreate($dx+$xpad,$th+$ypad);$color = ImageColorAllocate($im, $bgred,$bggreen,$bgblue);
$black = ImageColorAllocate($im, 0,0,0);
$fontcolor = ImageColorAllocate($im, $chred,$chgreen,$chblue);
ImageRectangle($im,0,0,$dx+$xpad-1,$th+$ypad-1,$black);
ImageRectangle($im,0,0,$dx+$xpad,$th+$ypad,$white);
if ($shadow=="はい")
ImageTTFText($im, $s, 0, (int)($xpad/2)-2+1, $th+2+(int)($ypad/2)-3, $black, $fontname, $text) ;
ImageTTFText($im, $s, 0, (int)($xpad/2)-2, $th+2+(int)($ypad/2)-1-3, $fontcolor, $fontname, $text) ;
Imagejpeg($im,"",$jpegquality);
ImageDestroy($im);

?>
################################################ #####
以下のフォームから来産できます:
################################################ #####
----------test.php----------------------



新しいページ 1




<フォームメソッド="POST" アクション="button.php">

文字


大小


区切り位置(折り返し区切り位置)


背景颜色


红色     
     绿色     
      蓝色


字元颜色


红色    
      绿色      
     蓝色


字型


阴影
               


トリミング サイズ


JPEG 商品価格 (0-100)



      





################################################ #####

または直接画像上の例一样呼:

################################################ #####
----test.php-----



新しいページ 1


  

  


 

以上は、学会用の PHP で生成されたイメージ図を紹介しており、イメージ図の内容も含まれています。PHP 教則に関心のある友人の助けになることを望みます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。