#色とピクセル
#画像を色で塗りつぶす
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
座標 x と y で指定される位置に、指定した 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); // 枠線の色と幅
});