ホームページ  >  記事  >  バックエンド開発  >  動的画像処理 — php (34)

動的画像処理 — php (34)

WBOY
WBOYオリジナル
2016-08-08 09:23:361062ブラウズ

1 PHP での GD ライブラリの使用

PHP は HTML 出力の生成に限定されず、さまざまな形式の画像ファイルを作成および操作することもできます。 PHP にはいくつかの組み込みイメージ情報関数が用意されており、GD 関数ライブラリを使用して新しいイメージを作成したり、既存のイメージを処理したりすることもできます。現在、GD2 ライブラリは JPEG、PNG、および WBMP 形式をサポートしています。ただし、GIF 形式はサポートされなくなりました。

• JPEG は、豊かな色と色のグラデーションを持つ写真や画像を保存するために一般的に使用される圧縮規格の名前です。この形式では非可逆圧縮が使用されます。

• PNG は、画像の可逆圧縮標準を使用するポータブル Web 画像です。

• WBMP は、ワイヤレス通信デバイス用に特別に設計されたファイル形式です。しかし、それは広く使用されていません。

2 画像生成手順

PHP で画像を作成するには、次の 4 つの手順を完了する必要があります:
1. 背景画像 (キャンバスとも呼ばれます) を作成し、以降の操作はこの背景画像に基づいて行われます。
2. 画像の輪郭を描くか、背景にテキストを入力します。
3. 最終的なグラフィックを出力します
4. リソースを解放します

3 キャンバス管理

imagecreate--新しいパレットベースの画像を作成します
??resource imagecreate( intx _サイズ、 inty_size)
?? この関数は、空の新しいキャンバスを作成するために使用されます。パラメータは画像サイズであり、単位はピクセルです。 256 色をサポートします。
??imagecreatetruecolor--新しいトゥルー カラー イメージを作成します
??リソース imagecreatetruecolor(intx_size, inty_size)
??新しいトゥルー カラー イメージ キャンバスを作成します。これには GD 2.0.1 以降が必要であり、作成できません。 GIF ファイル形式を使用します。
??imagedestroy--画像を破棄します
??boolimagedestroy( resource image )
??imagedestroy() 画像に関連付けられたメモリを解放します。 othersFunctions

ResourceMigmeCreateFrompng(String filename)pngファイルまたはurl

??リソースの新しい画像を作成します?? JPEG ファイルまたは URL 画像

??resource imagecreatefromgif( string filename
??GIF ファイルまたは URL から新しい画像を作成します
??resource imagecreatefromwbmp( string filename )
Create a new image from WBMP ファイルまたは URL
? ?intimagesx( resource image ) --- 画像の幅を取得します
??ntimagesy( resource image ) --- 画像の高さを取得します

4 カラーを設定します
imagecolorallocate -- 画像に色を割り当てます
??構文: intimagecolorallocate(resource image, intred, intgreen, intblue)

??imagecolorallocate() は、指定された RGB コンポーネントで構成される色を表す識別子を返します。 image パラメータは

??imagecreatetruecolor.() 関数の戻り値です。red、green、blue は、0 ~ 255 の整数、または 16 進数の 0x00 ~ 0xFF です。 image で表される画像で使用される各色を作成するには


5 画像を生成します
imagegif -- 画像を GIF 形式でブラウザまたはファイルに出力します
?? 構文: boolimagegif( resource image [,string filename] )

??imagejpeg-- 画像をブラウザまたは JPEG 形式のファイルに出力します

??構文: boolimagejpeg(resource image [,string filename [, intquality]] )

??imagepng -- 画像をブラウザまたは PNG 形式のファイルに出力します
??構文: boolimagepng(resource image [,string filename])
??imagewbmp -- 画像を WBMP でブラウザに出力しますformat デバイスまたはファイル
?? 構文: boolimagewbmp(resource image [, string filename [, intforeground]] )

6 画像を描画
?? 構文: boolimagefill( resourceimage , intx, inty, intcolor)
??imagefill() は、イメージ image の座標 x、y でカラー color で領域を塗りつぶします (イメージの左上隅は 0, 0) (つまり、 x、y 点と同じ色、および隣接する点と同じ色で塗りつぶされます)。

??imagesetpixel--単一ピクセルを描画します

??構文: boolimagesetpixel(resource image, intx, inty, intcolor)

??imagesetpixel() イメージ image の x、y のカラー color を使用します。座標 (画像の左上隅が 0,0) に点を描画します。
??imageline--線分を描画します
??構文: boolimageline(resource image, intx1, inty1, intx2, inty2, intcolor)
??imageline() からのイメージ image にカラー color を使用します。座標 x1、y1 から x2、y2 まで線分を描きます (画像の左上隅の 0、0)。

imagerectangle -- 長方形を描画します

??構文: boolimagerectangle(resource image, intx1, inty1, intx2, inty2, intcol)
??imagerectangle() は、col color を使用してイメージ image 内に四角形を描画します。その左上隅の座標は x1、y1 です。 , 右下隅の座標は x2, y2 です。画像の左上隅の座標は 0, 0 です。
??imagefilledrectangle -- 長方形を描画して塗りつぶします
??構文: boolimagefilledrectangle( resource image, intx1, inty1, intx2, inty2, intcolor )
??imagefilledrectangle() 画像内に長方形を描画します色で塗りつぶされた四角形の左上隅の座標は x1、y1、右下隅の座標は x2、y2 です。0、0 は画像の左上隅です

imagepolygon -- 多角形を描きます
? ? 構文: boolimagepolygon( resource image, array Points, intnum_points, intcolor )
??imagepolygon() 画像内にポリゴンを作成します。 Points は、ポリゴンの各頂点の座標を含む PHP 配列です。つまり、points[0] = x0、points[1] = y0、points[2] = x1、points[3] = y1 などです。 。 num_points は頂点の総数です。
??imagefilledpolygon -- 多角形を描画して塗りつぶします
??構文: boolimagefilledpolygon(resource image, array Points, intnum_points, intcolor)
??imagefilledpolygon() イメージ image に塗りつぶされた多角形を描画します。 Points パラメーターは、ポリゴンの各頂点の x 座標と y 座標を順番に含む配列です。 num_points パラメーターは頂点の合計数であり、3 より大きくなければなりません。

imageellipse--楕円を描画します
?? 構文: boolimageellipse( resource image, intcx, intcy, intw, inth, intcolor )
??imageellipse() image で表される画像内に中心を描画します。 cx、cy の楕円 (画像の左上隅が 0, 0)。 w と h はそれぞれ楕円の幅と高さを指定し、楕円の色は color で指定します。
??imagefilledellipse--楕円を描いて塗りつぶす
??構文: boolimagefilledellipse( resource image, intcx, intcy, intw, inth, intcolor )
??imagefilledellipse() で表される画像内cx,cy(画像の左上が0,0)を中心とした楕円を描きます。 w と h はそれぞれ楕円の幅と高さを指定します。楕円は色で塗りつぶされます。成功した場合は TRUE を返し、失敗した場合は FALSE を返します。

imagearc--楕円弧を描く
??boolimagearc( resource image, intcx, intcy, intw, inth, ints, inte, intcolor )
??imagearc() with cx, cy (左上隅)画像の)は0,0)であり、imageで表される画像を中心として楕円弧を描きます。 w と h はそれぞれ楕円の幅と高さを指定し、開始点と終了点は s パラメータと e パラメータで角度で指定します。 0°は 3 時の位置で、時計回りに描かれます。
??imagefilledarc--楕円弧を描いて塗りつぶす
??boolimagefilledarc( resource image, intcx, intcy, intw, inth, ints, inte, intcolor, intstyle )
??imagefilledarc() in画像 表示された画像で、cx、cy を使用して楕円弧を描きます (画像の左上隅が 0、0)。成功した場合は TRUE を返し、失敗した場合は FALSE を返します。 w と h はそれぞれ楕円の幅と高さを指定し、s と e パラメータは開始点と終了点を角度で指定します。 style には、IMG_ARC_PIE、IMG_ARC_CHORD、IMG_ARC_NOFILL、IMG_ARC_EDGED の値のビット単位の OR (OR) を指定できます。このうち、IMG_ARC_PIE と IMG_ARC_CHORD は相互に排他的です。IMG_ARC_CHORD は開始点と終了点を直線で接続するだけですが、IMG_ARC_PIE は円形の境界を生成します (両方を使用した場合は、IMG_ARC_CHORD が有効になります)。 IMG_ARC_NOFILL は、円弧または弦に塗りつぶしではなく輪郭のみが含まれることを指定します。 IMG_ARC_EDGED は、開始点と終了点を中心点に結ぶ直線を指定します。IMG_ARC_NOFILL と一緒に使用すると、円グラフの輪郭を (塗りつぶさずに) 描画する良い方法になります

6 画像内にテキストを描画します

imagestring-- 文字列を水平方向に描画します

?? 構文: boolimagestring(resource image, intfont, intx, inty, string s, intcol)
??imagestring() Col color を使用して文字列を描画しますイメージの x、y 座標 (これは文字列の左上隅の座標であり、イメージ全体の左上隅は 0, 0 です)。フォントが 1、2、3、4、または 5 の場合は、内蔵フォントが使用されます。
??imagestringup-- 文字列を垂直方向に描画します
??構文: boolimagestringup(resource image, intfont, intx, inty, string s, intcol)
??imagestring() は、col color を使用して変更します文字列 s は、image で表されるイメージの x、y 座標に対して垂直に描画されます (イメージの左上隅は 0, 0)。フォントが 1、2、3、4、または 5 の場合は、内蔵フォントが使用されます。

imagechar--水平地画一个字符
??语法:boolimagechar( resource image, intfont, intx, inty, string c, intcolor )
??imagechar() 将字符串c的第一个字符画在image指定的图像中,其左上角位于x,y(图像左上角为0, 0),颜色为color。如果font是1,2,3,4 或5,则使用内置的字体(更大的数字对应于更大的字体)。
??imagecharup--垂直地画一个字符
??语法:boolimagecharup( resource image, intfont, intx, inty, string c, intcolor )
??imagecharup() 将字符c垂直地画在image指定的图像上,位于x,y(图像左上角为0, 0),颜色为color。如果font为1,2,3,4 或5,则使用内置的字体。
??imagettftext--用TrueType 字体向图像写入文本
??语法:array imagettftext( resource image, float size, float angle, intx, inty, intcolor, string fontfile, string text )

例子:

<?<span>php
$im</span>= imagecreate(<span>150</span>,<span>150</span>); <span>//</span><span>创建一个150*150的画布</span>$bg= imagecolorallocate($im, <span>255</span>, <span>255</span>, <span>255</span><span>);
</span><span>//</span><span>设置画布的背景颜色为白色</span>$black = imagecolorallocate($im, <span>0</span>, <span>0</span>, <span>0</span>); <span>//</span><span>设置一个颜色变量为黑色</span>$<span>string</span>=<span>"</span><span>LAMPBrother</span><span>"</span>; <span>//</span><span>声明一个用于在图像中输出的字符串</span>imageString($im, <span>3</span>, <span>28</span>, <span>70</span>, $<span>string</span><span>, $black);
</span><span>//</span><span>水平将字符串$string输出到图像中</span>imageStringUp($im, <span>3</span>, <span>59</span>, <span>115</span>, $<span>string</span><span>, $black);
</span><span>//</span><span>垂直由下而上输出$string到图像中</span><span>for</span>($i=<span>0</span>,$j=strlen($<span>string</span>); $i<strlen($<span>string</span>); $i++,$j--<span>){
</span><span>//</span><span>使用循环单个字符输出到图像中</span>imageChar($im, <span>3</span>, <span>10</span>*($i+<span>1</span>), <span>10</span>*($i+<span>2</span>), $<span>string</span><span>[$i], $black);
</span><span>//</span><span>向下倾斜输出每个字符</span>imageCharUp($im, <span>3</span>, <span>10</span>*($i+<span>1</span>), <span>10</span>*($j+<span>2</span>), $<span>string</span>[$i], $black); <span>//</span><span>向上倾斜输出每个字符</span><span>}
header(</span><span>'</span><span>Content-type: image/png</span><span>'</span>); <span>//</span><span>设置输出的头部标识符</span>imagepng($im); <span>//</span><span>输出PNG格式的图片</span>?>

以上就介绍了动态图像处理 — php(34),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

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