PHP 構築検証コード
コードは次のとおりです:
<?phpheader('Content-type:image/jpeg');$width=120;$height=40;$element=array('a','b','c','d','e','f','g','h','i','j','k','m','n','o','p','q','r','s','t','u','v','w','x','y','z');$string='';for ($i=0;$i<5;$i++){<span style="white-space:pre"> </span>$string.=$element[rand(0,count($element)-1)];}$img=imagecreatetruecolor($width, $height);//设置图片大小$colorBg=imagecolorallocate($img,rand(200,255),rand(200,255),rand(200,255));//随机产生背景色$colorBorder=imagecolorallocate($img,rand(200,255),rand(200,255),rand(200,255));//随机产生背景色$colorString=imagecolorallocate($img,rand(10,100),rand(10,100),rand(10,100));imagefill($img,0,0,$colorBg);//设置图片背景色imagerectangle($img,0,0,$width-1,$height-1,$colorBorder);//构建矩形边框for($i=0;$i<100;$i++){//画一百个小像素<span style="white-space:pre"> </span>imagesetpixel($img,rand(0,$width-1),rand(0,$height-1),imagecolorallocate($img,rand(100,200),rand(100,200),rand(100,200)));//画一个单一的像素}for($i=0;$i<3;$i++){//画三条随机线<span style="white-space:pre"> </span>imageline($img,rand(0,$width/2),rand(0,$height),rand($width/2,$width),rand(0,$height),imagecolorallocate($img,rand(100,200),rand(100,200),rand(100,200)));<span style="white-space:pre"> </span>//前两个为起点坐标,后两个为终点坐标,起点控制在左半边,终点控制在右半边}//imagestring($img,5,0,0,'abcd',$colorString);imagettftext($img,14,rand(-5,5),rand(5,15),rand(30,35),$colorString,'font/SketchyComic.ttf',$string);//绘制文字,可以选择丰富的字体的方法//说明:array imagettftext ( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text )imagejpeg($img);imagedestroy($img);
多くの場合、フォントはスクリプトと同じディレクトリに配置されます。次のヒントにより、インクルージョンの問題を軽減できます。
<span style="color:rgb(0,0,187)"><?php<code><span style="color:rgb(0,0,187)"><?php<br></span><span style="color:rgb(255,128,0)">// Set the enviroment variable for GD<br></span><span style="color:rgb(0,0,187)">putenv</span><span style="color:rgb(0,119,0)">(</span><span style="color:rgb(221,0,0)">'GDFONTPATH=' </span><span style="color:rgb(0,119,0)">. </span><span style="color:rgb(0,0,187)">realpath</span><span style="color:rgb(0,119,0)">(</span><span style="color:rgb(221,0,0)">'.'</span><span style="color:rgb(0,119,0)">));<br><br></span><span style="color:rgb(255,128,0)">// Name the font to be used (note the lack of the .ttf extension)<br></span><span style="color:rgb(0,0,187)">$font </span><span style="color:rgb(0,119,0)">= </span><span style="color:rgb(221,0,0)">'SomeFont'</span><span style="color:rgb(0,119,0)">;<br></span><span style="color:rgb(0,0,187)">?></span>
// GD の環境変数を設定しますputenv
('GDFONTPATH=' 。リアルパス('.')); // 使用するフォントに名前を付けます (拡張子 .ttf がないことに注意してください)$font = 'SomeFont'>?>imagettftext() テキスト フレームの 4 隅を表す 8 つのセルを含む配列を返します。座るコーナー、右下コーナー、右上コーナー、左上コーナーです。これらの点はテキストに対して相対的なものであり、角度とは関係がないため、「左上」は水平方向に見たときのテキストの左上隅を指します。
例 1 imagettftext() 例
これサンプル スクリプトは、黒 (灰色の網掛け) の Arial フォントで「Testing...」と書かれた白の 400x30 ピクセルの PNG 画像を生成します。
<span style="color:rgb(0,0,187)"><?php<br></span><span style="color:rgb(255,128,0)">//コンテンツタイプを設定します<br></span><span style="color:rgb(0,0,187)">ヘッダー</span><span style="color:rgb(0,119,0)">(</span><span style="color:rgb(221,0,0)">"Content-type: image/png"</span><span style="color:rgb(0,119,0)">);<br><br></span><span style="color:rgb(255,128,0)">// 画像を作成します<br></span><span style="color:rgb(0,0,187)">$im </span><span style="color:rgb(0,119,0)">= </span><span style="color:rgb(0,0,187)">imagecreatetruecolor</span><span style="color:rgb(0,119,0)">(</span><span style="color:rgb(0,0,187)">400</span><span style="color:rgb(0,119,0)">,</span><span style="color:rgb(0,0,187)">30</span><span style="color:rgb(0,119,0)">); <br><br></span><span style="color:rgb(255,128,0)">// いくつかの色を作成します<br></span><span style="color:rgb(0,0,187)">$white </span><span style="color:rgb(0,119,0)">= </span><span style="color:rgb(0,0,187)">imagecolorallocate</span><span style="color:rgb(0,119,0)">(</span><span style="color:rgb(0,0,187)">$im</span><span style="color:rgb(0,119,0)">、</span><span style="color:rgb(0,0,187)">255</span><span style="color:rgb(0,119,0)">、</span><span style="color:rgb(0,0,187)">255</span><span style="color:rgb(0,119,0)">、</span><span style="color:rgb(0,0,187)">255</span><span style="color:rgb(0,119,0)">);<br></span><span style="color:rgb(0,0,187)">$grey </span><span style="color:rgb(0,119,0)">= </span><span style="color:rgb(0,0,187)">imagecolorallocate</span><span style="color:rgb(0,119,0)">(</span><span style="color:rgb(0,0,187)">$im</span> <span style="color:rgb(0,119,0)">、</span><span style="color:rgb(0,0,187)">128</span><span style="color:rgb(0,119,0)">、</span><span style="color:rgb(0,0,187)">128</span><span style="color:rgb(0,119,0)">、</span><span style="color:rgb(0,0,187)">128</span><span style="color:rgb(0,119,0)">);<br> </span><span style="color:rgb(0,0,187)">$black </span><span style="color:rgb(0,119,0)">= </span><span style="color:rgb(0,0,187)">imagecolorallocate</span><span style="color:rgb(0,119,0)">(</span><span style="color:rgb(0,0,187)">$im</span><span style="color:rgb(0,119,0)">, </span><span style="color:rgb(0,0,187)"> 0</span><span style="color:rgb(0,119,0)">,</span><span style="color:rgb(0,0,187)">0</span><span style="color:rgb(0,119,0)">,</span><span style="color:rgb(0,0,187)">0</span><span style="color:rgb(0,119,0)">);<br></span><span style="color:rgb(0,0,187)">imagefilledrectangle</span> <span style="color:rgb(0,119,0)">(</span><span style="color:rgb(0,0,187)">$im</span><span style="color:rgb(0,119,0)">, </span><span style="color:rgb(0,0,187)">0</span><span style="color:rgb(0,119,0)">, </span><span style="color:rgb(0,0,187)">0</span><span style="color:rgb(0,119,0)">, </span> <span style="color:rgb(0,0,187)">399</span><span style="color:rgb(0,119,0)">,</span><span style="color:rgb(0,0,187)">29</span><span style="color:rgb(0,119,0)">,</span><span style="color:rgb(0,0,187)">$white</span><span style="color:rgb(0,119,0)">);<br><br></span> <span style="color:rgb(255,128,0)">// 描画するテキスト <br></span><span style="color:rgb(0,0,187)">$text </span><span style="color:rgb(0,119,0)">= </span><span style="color:rgb(221,0,0)">'テスト中...'</span><span style="color:rgb(0,119,0)">;<br></span><span style="color:rgb(255,128,0)">//パスを独自のフォント パスに置き換えます<br></span><span style="color:rgb(0,0,187)">$font</span><span style="color:rgb(0,119,0)">=</span><span style="color:rgb(221,0,0)">'arial.ttf'</span><span style="color:rgb(0,119,0)">; <br><br></span><span style="color:rgb(255,128,0)">// テキストにシャドウを追加します<br></span><span style="color:rgb(0,0,187)">imagettftext</span><span style="color:rgb(0,119,0)">(</span><span style="color:rgb(0,0,187)">$im</span><span style="color:rgb(0,119,0)">、</span><span style="color:rgb(0,0,187)">20</span><span style="color:rgb(0,119,0)">、</span><span style="color:rgb(0,0,187)">0</span><span style="color:rgb(0,119,0)">、</span><span style="color:rgb(0,0,187)">11</span><span style="color:rgb(0,119,0)">、</span><span style="color:rgb(0,0,187)"> 21</span><span style="color:rgb(0,119,0)">、</span><span style="color:rgb(0,0,187)">$grey</span><span style="color:rgb(0,119,0)">、</span><span style="color:rgb(0,0,187)">$font</span><span style="color:rgb(0,119,0)">、</span><span style="color:rgb(0,0,187)">$text</span><span style="color:rgb(0,119,0)">);<br><br></span><span style="color:rgb(255,128,0)">// テキストを追加<br></span><span style="color:rgb(0,0,187)">imagettftext</span><span style="color:rgb(0,119,0)">(</span><span style="color:rgb(0,0,187)">$im</span><span style="color:rgb(0,119,0)">,</span><span style="color:rgb(0,0,187)">20</span><span style="color:rgb(0,119,0)">,</span><span style="color:rgb(0,0,187)">0 </span><span style="color:rgb(0,119,0)">、</span><span style="color:rgb(0,0,187)">10</span><span style="color:rgb(0,119,0)">、</span><span style="color:rgb(0,0,187)">20</span><span style="color:rgb(0,119,0)">、</span><span style="color:rgb(0,0,187)">$black</span><span style="color:rgb(0,119,0)">、 </span><span style="color:rgb(0,0,187)">$font</span><span style="color:rgb(0,119,0)">, </span><span style="color:rgb(0,0,187)">$text</span><span style="color:rgb(0,119,0)">);<br><br></span><span style="color:rgb(255,128,0)">// imagepng() 結果の使用imagejpeg()<br></span><span style="color:rgb(0,0,187)">imagepng</span><span style="color:rgb(0,119,0)">(</span><span style="color:rgb(0,0,187)">$im</span><span style="color:rgb(0,119,0)">);<br></span><span style="color:rgb(0,0,187)"> と比較して、より鮮明なテキストです。 imagedestroy</span><span style="color:rgb(0,119,0)">(</span><span style="color:rgb(0,0,187)">$im</span><span style="color:rgb(0,119,0)">);<br></span><span style="color:rgb(0,0,187)">?></span>