PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

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()で登録したブラシ画像がスタイルパターンに従って描画されます。

入力画像

PHPのimagesetstyle()関数で線画のスタイルを設定する方法をわかりやすく解説

出力画像

PHPのimagesetstyle()関数で線画のスタイルを設定する方法をわかりやすく解説

使用例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);
?>

出力結果

PHPのimagesetstyle()関数で線画のスタイルを設定する方法をわかりやすく解説

このようにimagesetstyle()を活用すれば、単色の直線にとどまらず、自由な配色パターンによる破線や、画像をモチーフにした装飾線など、グラフィック表現の幅を大きく広げることができます。チャートや図形の装飾など、実際のプロジェクトでもぜひ活用してみてください。

  1. PHPのimagecrop()関数で画像を指定した矩形領域にトリミングする方法

    imagecrop()関数とはimagecrop()は、PHPに組み込まれている関数で、画像を指定した矩形領域にトリミングするために使用されます。指定された矩形領域から画像を切り取り、出力画像を返します。なお、元の画像リソース自体は変更されません。構文resource imagecrop ($image, $rect)パラメータimagecrop()は、$imageと$rectの2つのパラメータを受け取ります。$image − imagecreatetruecolor()やimagecreatefrompng()などの画像作成関数によって返される画像リソースです。処理対象の画像を指定します。$

  2. PHPのimagecreatefromjpeg()関数でJPEGファイルから新しい画像を作成する方法

    imagecreatefromjpeg()は、PHPに組み込まれている関数の一つで、JPEGファイルから新しい画像を生成するために使用されます。指定したファイル名から取得した画像を表す画像リソース識別子(イメージID)を返します。この関数は、GDライブラリが有効になっている環境で動作し、JPEG画像の読み込み、編集、再保存など、さまざまな画像処理の起点としてよく利用されます。構文resource imagecreatefromjpeg(string $filename)パラメータimagecreatefromjpeg()が受け取るパラメータは$filenameの1つだけです。ここには、読み込む