サイトを更新しています。 数日間、レイアウトや翻訳に不具合が出ることがあります。ドキュメントは引き続きご利用いただけます。表示が崩れている場合は、後ほど再読み込みしてください。

描画

3.x 2026年3月7日

#色とピクセル

#画像を色で塗りつぶす

public Image::fill(mixed $color, null|int $x = null, null|int $y = null): ImageInterface

現在の画像を指定した色で塗りつぶします。任意で塗り始める位置を指定できます。X および Y が指定された場合はフラッドフィル(flood fill)が実行され、指定した位置にある色のみが塗りつぶされます。位置を指定しない場合は画像全体が塗りつぶされます。

#パラメータ

名前 説明
color mixed 塗りつぶしの色。異なるカラーフォーマットのいずれかの形式で指定します
x int 塗り始める位置のオプションの x 座標
y int 塗り始める位置のオプションの y 座標

#

use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;

// 指定したドライバーで新しい Manager インスタンスを作成する
$manager = new ImageManager(Driver::class);

// 画像を読み込む
$image = $manager->read('images/example.png');

// 画像を色でフラッドフィルする
$image = $image->fill('#b53717', 10, 10);

#ピクセルを描画する

public Image::drawPixel(int $x, int $y, mixed $color): ImageInterface

座標 xy で指定される位置に、指定した color で単一のピクセルを描画します。

#パラメータ

名前 説明
x integer 現在の画像におけるピクセルの x 座標
y integer 現在の画像におけるピクセルの y 座標
color mixed ピクセルの色(有効なフォーマット

#

use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;

// ファイルからテスト用の画像を作成する
$manager = new ImageManager(new Driver());
$image = $manager->read('test.png');

// 異なる位置に3つのピクセルを描画する
$image->drawPixel(12, 30, 'ff00ff');
$image->drawPixel(100, 1, 'rgb(255, 255, 0)');
$image->drawPixel(200, 2, 'orange');

#幾何学的図形

#長方形を描画する

public Image::drawRectangle(int $x, int $y, Closure|Rectangle $init): ImageInterface

左上の位置を x, y にして、現在の画像上に色付きの長方形を描画します。形状の外観は、3番目の引数として init コールバックか Rectangle オブジェクトを渡して定義します。

#パラメータ

名前 説明
x integer 現在の画像における長方形の左上隅の x 座標
y integer 現在の画像における長方形の左上隅の y 座標
init Closure or Intervention\Image\Geometry\Rectangle 長方形の外観を定義するコールバック、または Rectangle オブジェクト。例を参照してください。

#

use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
use Intervention\Image\Geometry\Factories\RectangleFactory;

// ファイルからテスト用の画像を作成する
$manager = new ImageManager(new Driver());
$image = $manager->read('test.png');

// 枠線付きのオレンジ色の長方形を描画する
$image->drawRectangle(10, 10, function (RectangleFactory $rectangle) {
    $rectangle->size(180, 125); // 長方形の幅と高さ
    $rectangle->background('orange'); // 長方形の背景色
    $rectangle->border('white', 2); // 長方形の枠線の色と太さ
});

#楕円を描画する

public Image::drawEllipse(int $x, int $y, Closure|Ellipse $init): ImageInterface

中心位置を x, y にして、現在の画像上に色付きの楕円を描画します。外観は 3 番目の引数として init コールバックか Ellipse オブジェクトを渡して定義します。

#パラメータ

名前 説明
x integer 現在の画像における楕円の中心の x 座標
y integer 現在の画像における楕円の中心の y 座標
init Closure or Intervention\Image\Geometry\Ellipse 楕円の外観を定義するコールバック、または Ellipse オブジェクト。例を参照してください。

#

use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
use Intervention\Image\Geometry\Factories\EllipseFactory;

// ファイルからテスト用の画像を作成する
$manager = new ImageManager(Driver::class);
$image = $manager->read('test.png');

// 青い枠線付きの赤い楕円を描画する
$image->drawEllipse(10, 10, function (EllipseFactory $ellipse) {
    $ellipse->size(180, 125); // 楕円の幅と高さ
    $ellipse->background('f00'); // 背景色
    $ellipse->border('00f', 1); // 枠線の色と太さ
});

#円を描画する

public Image::drawCircle(int $x, int $y, Closure|Circle $init): ImageInterface

中心位置を x, y にして、現在の画像上に色付きの円を描画します。外観は 3 番目の引数として init コールバックか Circle オブジェクトを渡して定義します。

#パラメータ

名前 説明
x integer 現在の画像における円の中心の x 座標
y integer 現在の画像における円の中心の y 座標
init Closure or Intervention\Image\Geometry\Circle 円の外観を定義するコールバック、または Circle オブジェクト。例を参照してください。

#

use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
use Intervention\Image\Geometry\Factories\CircleFactory;

// ファイルからテスト用の画像を作成する
$manager = new ImageManager(Driver::class);
$image = $manager->read('test.png');

// 白い枠線付きの緑色の円を描画する
$image->drawCircle(10, 10, function (CircleFactory $circle) {
    $circle->radius(150); // 円の半径(ピクセル)
    $circle->background('lightblue'); // 背景色
    $circle->border('b53717', 1); // 枠線の色と太さ
});

#線を描画する

public Image::drawLine(Closure|Line $init): ImageInterface

現在の画像に線を描画します。init コールバックまたはラインオブジェクトを渡して、形状の全体的な外観を定義できます。

#パラメータ

Name Type Description
init Closure or Intervention\Image\Geometry\Line ラインの外観を定義するコールバック、またはラインオブジェクト。例を参照してください。

#

use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
use Intervention\Image\Geometry\Factories\LineFactory;

// ファイルからテスト画像を作成します
$manager = new ImageManager(Driver::class);
$image = $manager->read('test.png');

// 半透明の白い線を描画します
$image->drawLine(function (LineFactory $line) {
    $line->from(10, 10); // 線の開始点
    $line->to(300, 100); // 終点
    $line->color('ff00ff'); // 線の色
    $line->width(5); // 線の幅(ピクセル)
});

#ポリゴンを描画

public Image::drawPolygon(Closure|Polygon $init): ImageInterface

現在の画像にポリゴンを描画します。init コールバックまたはポリゴンオブジェクトを渡して、形状の全体的な外観を定義できます。

#パラメータ

Name Type Description
init Closure or Intervention\Image\Geometry\Polygon ポリゴンの外観を定義するコールバック、またはポリゴンオブジェクト。例を参照してください。

#

use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
use Intervention\Image\Geometry\Factories\PolygonFactory;

// ファイルからテスト画像を作成します
$manager = new ImageManager(new Driver());
$image = $manager->read('test.png');

// ポリゴンを描画します
$image->drawPolygon(function (PolygonFactory $polygon) {
    $polygon->point(10, 10); // ポリゴンの点を追加します
    $polygon->point(150, 150); // 点を追加します
    $polygon->point(40, 180); // 点を追加します
    $polygon->point(60, 100); // 点を追加します
    $polygon->background('#b35187'); // 背景色
    $polygon->border('#ff0', 6); // 枠線の色と幅
});

#ベジェ曲線を描画

public Image::drawBezier(Closure|Bezier $init): ImageInterface

このメソッドはBézier curves(ベジェ曲線)を描画します。形状はコールバックで指定する制御点の集合によって定義されます。描画される曲線の種類は指定する制御点の数(3点または4点)によって決まり、3点の場合は二次ベジェ曲線、4点の場合は三次ベジェ曲線になります。最初と最後の制御点が曲線の開始点と終了点を定義します。

曲線の色、幅、背景色もコールバックで設定できます。

#パラメータ

Name Type Description
init Closure or Intervention\Image\Geometry\Bezier ベジェ曲線またはベジェオブジェクトの外観と位置を定義するコールバック。例を参照してください。

#

use Intervention\Image\ImageManager;
use Intervention\Image\Geometry\Factories\BezierFactory;

// 新しい画像を作成します
$image = ImageManager::gd()
    ->create(500, 500)
    ->fill('666');

// 赤の塗りつぶし背景を持つ黄色の二次ベジェ曲線を描画します
$image->drawBezier(function (BezierFactory $bezier) {
    $bezier->point(300, 260); // 制御点1
    $bezier->point(150, 335); // 制御点2
    $bezier->point(300, 410); // 制御点3
    $bezier->background('f00'); // 背景色
    $bezier->border('ff0'); // 枠線の色
});

// 4つの制御点で幅4pxの赤い三次ベジェ曲線を描画します
$image->drawBezier(function (BezierFactory $bezier) {
    $bezier->point(50, 50); // 制御点1
    $bezier->point(200, 50); // 制御点2
    $bezier->point(150, 200); // 制御点3
    $bezier->point(300, 200); // 制御点4
    $bezier->border('ff0000', 4); // 枠線の色と幅
});