PHPのimagesetstyle()関数で線画のスタイルを設定する方法をわかりやすく解説
imagesetstyle()は、PHPのGDライブラリに組み込まれた関数の一つで、線画(ライン描画)のスタイルを設定するために使用されます。この関数で設定したスタイルは、imageline()やimagepolygon()など、あらゆる線描画関数と組み合わせて利用できます。
ここでいう「スタイル」とは、複数の色を順番に並べることで実現する破線や点線などのパターンのことです。スタイル配列に格納された色が先頭から順に適用され、パターンとして繰り返し描画される仕組みになっています。
構文
bool imagesetstyle(resource $image, array $style)
パラメータ
imagesetstyle()は、以下の2つのパラメータを受け取ります。
$image − 処理対象となる画像リソースを指定します。
$style − 線に適用するピクセルの色を格納した配列を指定します。
戻り値
スタイルの設定に成功した場合はTrueを、失敗した場合はFalseを返します。
使用例1:破線とブラシ画像を使った装飾線の描画
次の例では、赤と白を交互に配置した破線を1本描画し、さらにimagesetbrush()と組み合わせて、PNG画像(スマイリー顔)を連続的に描き出す装飾線を作成しています。
<?php
header("Content-type: image/jpeg");
$img = imagecreatetruecolor(700, 300);
$w = imagecolorallocate($img, 122, 122, 122);
$red = imagecolorallocate($img, 255, 0, 0);
/* 赤5ピクセル+白5ピクセルの破線を描画 */
$style = array($red, $red, $red, $red, $red, $w, $w, $w, $w, $w);
imagesetstyle($img, $style);
imageline($img, 0, 0, 200, 200, IMG_COLOR_STYLED);
/* imagesetbrush()と組み合わせてスマイリー顔の線を描画 */
$style = array($w, $w, $w, $w, $w, $w, $w, $w, $w, $w, $w, $w, $red);
imagesetstyle($img, $style);
$brush = imagecreatefrompng('C:\xampp\htdocs\Images\img34.png');
$w2 = imagecolorallocate($brush, 255, 255, 255);
imagecolortransparent($brush, $w2);
imagesetbrush($img, $brush);
imageline($img, 200, 0, 0, 200, IMG_COLOR_STYLEDBRUSHED);
imagejpeg($img);
imagedestroy($img);
?>
ここでのポイントは、imageline()の色指定部分にIMG_COLOR_STYLEDを渡すと、imagesetstyle()で設定したスタイルが線に適用されるという点です。同様にIMG_COLOR_STYLEDBRUSHEDを指定すると、imagesetbrush()で登録したブラシ画像がスタイルパターンに従って描画されます。
入力画像

出力画像

使用例2:青と緑の破線を描画する
次の例では、既存のPNG画像を読み込み、その上に青5ピクセル+緑5ピクセルの破線を水平方向に描画しています。
<?php
// imagecreatefrompng()関数でPNG画像を読み込む
$img = imagecreatefrompng('C:\xampp\htdocs\Images\img34.png');
// 青と緑の色を割り当てる
$blue = imagecolorallocate($img, 0, 0, 255);
$green = imagecolorallocate($img, 0, 255, 0);
// 青5ピクセル+緑5ピクセルの破線を描画
$style = array($blue, $blue, $blue, $blue, $blue, $green, $green, $green, $green, $green);
imagesetstyle($img, $style);
imageline($img, 0, 100, 800, 100, IMG_COLOR_STYLED);
// 画像をブラウザに出力する
header('Content-type: image/png');
imagepng($img);
?>
出力結果

このようにimagesetstyle()を活用すれば、単色の直線にとどまらず、自由な配色パターンによる破線や、画像をモチーフにした装飾線など、グラフィック表現の幅を大きく広げることができます。チャートや図形の装飾など、実際のプロジェクトでもぜひ活用してみてください。
-
PHPのimagecrop()関数で画像を指定した矩形領域にトリミングする方法
imagecrop()関数とはimagecrop()は、PHPに組み込まれている関数で、画像を指定した矩形領域にトリミングするために使用されます。指定された矩形領域から画像を切り取り、出力画像を返します。なお、元の画像リソース自体は変更されません。構文resource imagecrop ($image, $rect)パラメータimagecrop()は、$imageと$rectの2つのパラメータを受け取ります。$image − imagecreatetruecolor()やimagecreatefrompng()などの画像作成関数によって返される画像リソースです。処理対象の画像を指定します。$
-
PHPのimagecreatefromjpeg()関数でJPEGファイルから新しい画像を作成する方法
imagecreatefromjpeg()は、PHPに組み込まれている関数の一つで、JPEGファイルから新しい画像を生成するために使用されます。指定したファイル名から取得した画像を表す画像リソース識別子(イメージID)を返します。この関数は、GDライブラリが有効になっている環境で動作し、JPEG画像の読み込み、編集、再保存など、さまざまな画像処理の起点としてよく利用されます。構文resource imagecreatefromjpeg(string $filename)パラメータimagecreatefromjpeg()が受け取るパラメータは$filenameの1つだけです。ここには、読み込む