#Цвета и пиксели
#Заполнение изображений цветом
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 = 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, в заданном цвете.
#Параметры
| Имя | Тип | Описание |
|---|---|---|
| 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');
// нарисовать три пикселя в разных позициях
$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. Определите внешний вид фигуры, передав в качестве третьего параметра callback init или объект Rectangle.
#Параметры
| Имя | Тип | Описание |
|---|---|---|
| x | integer | Позиция верхнего левого угла прямоугольника по оси x в текущем изображении |
| y | integer | Позиция верхнего левого угла прямоугольника по оси y в текущем изображении |
| init | Closure or Intervention\Image\Geometry\Rectangle | Callback для определения внешнего вида прямоугольника или объект 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. Определите внешний вид фигуры, передав в качестве третьего параметра callback init или объект Ellipse.
#Параметры
| Имя | Тип | Описание |
|---|---|---|
| x | integer | Позиция центра эллипса по оси x в текущем изображении |
| y | integer | Позиция центра эллипса по оси y в текущем изображении |
| init | Closure or Intervention\Image\Geometry\Ellipse | Callback для определения внешнего вида эллипса или объект 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. Определите внешний вид фигуры, передав в качестве третьего параметра callback init или объект Circle.
#Параметры
| Имя | Тип | Описание |
|---|---|---|
| x | integer | Позиция центра круга по оси x в текущем изображении |
| y | integer | Позиция центра круга по оси y в текущем изображении |
| init | Closure or Intervention\Image\Geometry\Circle | Callback для определения внешнего вида круга или объекта 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
Рисует линию на текущем изображении. Определите внешний вид фигуры, передав callback init или объект Line.
#Параметры
| Имя | Тип | Описание |
|---|---|---|
| init | Closure or Intervention\Image\Geometry\Line | Callback для определения внешнего вида линии или объект 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
Рисует многоугольник на текущем изображении. Определите внешний вид фигуры, передав callback init или объект Polygon.
#Параметры
| Имя | Тип | Описание |
|---|---|---|
| init | Closure or Intervention\Image\Geometry\Polygon | Callback для определения внешнего вида многоугольника или объект 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
Этот метод рисует кривые Безье, форма которых задаётся набором контрольных точек, указанных в callback. Тип рисуемой кривой зависит от числа указанных контрольных точек, которых должно быть либо три, либо четыре. При трёх контрольных точках получается квадратичная кривая Безье, а при четырёх — кубическая кривая Безье. Первая и последняя контрольные точки определяют начало и конец кривой.
Цвет, ширину и фон кривой также можно задать с помощью callback.
#Параметры
| Имя | Тип | Описание |
|---|---|---|
| init | Closure or Intervention\Image\Geometry\Bezier | Callback для определения внешнего вида и положения кривой Безье или объекта Bezier. См. пример. |
#Пример
use Intervention\Image\ImageManager;
use Intervention\Image\Geometry\Factories\BezierFactory;
// create a new image
$image = ImageManager::gd()
->create(500, 500)
->fill('666');
// draw a yellow quadratic bezier curve with a filled red background
$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'); // цвет границы
});
// draw a 4px red cubic bezier curve with four control points
$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); // цвет и толщина границы
});