#Информация о цвете
#Чтение цветов определённых пикселей
public Image::pickColor(int $x, int $y, int $frame_key = 0): ColorInterface
Считывает цвет пикселя по указанным координатам X и Y. Также можно получить ключ кадра, из которого берётся цвет. Это актуально только для анимированных изображений.
#Параметры
| Name | Type | Description |
|---|---|---|
| x | int | X-координата пикселя |
| y | int | Y-координата пикселя |
| frame_key | int | Необязательный ключ кадра, из которого читается информация о цвете |
#Пример
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
// Создать новый экземпляр менеджера с нужным драйвером
$manager = new ImageManager(Driver::class);
// Прочитать изображение
$image = $manager->read('images/animation.gif');
// Прочитать информацию о цвете для кадра 10 в позиции 23/9
$color = $image->pickColor(23, 9, 10);
// 'f3fbe6'
$hex = $color->toHex();
// 'rgb(243, 251, 230)'
$string = $color->toString();
// (int) 243
$red = $color->red()->toInt();
// (int) 251
$green = $color->green()->toInt();
// (int) 230
$blue = $color->blue()->toInt();
// (int) 255
$alpha = $color->alpha()->toInt();
#Чтение всех цветов определённых пикселей в анимированных изображениях
public Image::pickColors(int $x, int $y): CollectionInterface
Считывает все цвета пикселя по координатам X и Y и возвращает их в коллекции. Для анимированных изображений эта коллекция будет содержать все цвета указанной позиции для всех кадров. Для неанимированных изображений коллекция будет содержать только один цвет, так как изображение содержит только один кадр.
#Параметры
| Name | Type | Description |
|---|---|---|
| x | int | X-координата пикселя |
| y | int | Y-координата пикселя |
#Пример
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// Создать новый экземпляр менеджера с нужным драйвером
$manager = new ImageManager(new Driver());
// Прочитать изображение
$image = $manager->read('images/animation.gif');
// Прочитать информацию о цветах в позиции
$colors = $image->pickColors(10, 10);
// первый цвет
$color = $colors->first();
// цвет для определённого кадра
$color = $colors->get(6);
#Преобразование цветов
После того как цвета пикселей изображения будут считаны в объект, становятся доступны дополнительные возможности.
#Преобразование цветов в строковые значения
public ColorInterface::toString(): ColorInterface
Каждый объект цвета можно представить в виде строки. Можно использовать метод toString() или привести объект к строке напрямую. Разумеется, вывод зависит от соответствующего цветового пространства.
use Intervention\Image\ImageManager;
use Intervention\Image\Colors\Hsl\Colorspace as HslColorspace;
// Создать новый экземпляр менеджера с нужным драйвером
$manager = ImageManager::gd();
// Прочитать изображение
$image = $manager->read('images/example.png');
// Прочитать цвет пикселя
$color = $image->pickColor(20, 10);
// Преобразовать цвет в строковый формат
$result = $color->toString(); // "rgba(255, 255, 255, 1.0)"
// тот же результат
$result = (string) $color;
#Преобразование цветов между цветовыми пространствами
public ColorInterface::convertTo(string|ColorspaceInterface $colorspace): ColorInterface
У каждого объекта цвета есть метод для конвертации в другие цветовые пространства. Целевое цветовое пространство можно задать либо строкой, либо объектом. Это работает даже если текущий драйвер не поддерживает целевое цветовое пространство.
Доступны следующие цветовые пространства.
Intervention\Image\Colors\Rgb\ColorspaceIntervention\Image\Colors\Cmyk\ColorspaceIntervention\Image\Colors\Hsv\ColorspaceIntervention\Image\Colors\Hsl\Colorspace
use Intervention\Image\ImageManager;
use Intervention\Image\Colors\Hsl\Colorspace as HslColorspace;
// Создать новый экземпляр менеджера с нужным драйвером
$manager = ImageManager::imagick();
// Прочитать изображение
$image = $manager->read('images/example.png');
// Прочитать цвет пикселя
$color = $image->pickColor(20, 10);
$result = $color->toString(); // "rgba(0, 255, 255, 1.0)"
// Преобразовать цвет в формат HSL
$hslColor = $color->convertTo(HslColorspace::class);
$result = $hslColor->toString(); // "hsl(180, 100, 50)"
#Цветовые пространства
Поддерживаемые цветовые пространства в основном зависят от используемого драйвера. Драйвер Imagick поддерживает RGB и CMYK, тогда как драйвер GD ограничен RGB.
При чтении CMYK-изображений с помощью Intervention Image и драйвера GD изображения автоматически конвертируются в RGB.
#Чтение цветового пространства изображения
public Image::colorspace(): ColorspaceInterface
Эта функция считывает цветовое пространство текущего экземпляра изображения.
#Пример
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
// Создать новый экземпляр менеджера с нужным драйвером
$manager = new ImageManager(Driver::class);
// Прочитать изображение
$image = $manager->read('images/example.jpg');
// Получить объект цветового пространства
$colorspace = $image->colorspace();
#Изменение цветового пространства изображения
public Image::setColorspace(string|ColorspaceInterface $colorspace): ImageInterface
Эта функция конвертирует текущее изображение в указанное цветовое пространство. Целевое пространство можно задать как объектом, так и именем класса или сокращением цветового пространства.
#Параметры
| Name | Type | Description |
|---|---|---|
| colorspace | string или ColorspaceInterface | Целевое цветовое пространство |
#Пример
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
use Intervention\Image\Colors\Rgb\Colorspace as RgbColorspace;
use Intervention\Image\Colors\Cmyk\Colorspace as CmykColorspace;
// Создать новый экземпляр менеджера с нужным драйвером
$manager = new ImageManager(new Driver());
// Прочитать изображение
$image = $manager->read('images/example.jpg');
// Преобразовать изображение в CMYK по аббревиатуре
$colorspace = $image->setColorspace('cmyk');
// Снова преобразовать изображение в RGB по имени класса
$colorspace = $image->setColorspace(RgbColorspace::class);
// И снова преобразовать в CMYK, передав объект
$colorspace = $image->setColorspace(new CmykColorspace());
#Цветовые профили
В настоящее время Intervention Image может работать с цветовыми профилями только при использовании драйвера ìmagick.
#Чтение цветовых профилей
public Image::profile(): ProfileInterface
Эта функция считывает ICC-профиль цвета из текущего экземпляра изображения. Если профиль не найден, выбрасывается исключение ColorException.
#Пример
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// Создать новый экземпляр менеджера с нужным драйвером
$manager = new ImageManager(new Driver());
// Прочитать изображение
$image = $manager->read('images/example.jpg');
// Прочитать icc-профиль
$profile = $image->profile();
// Сохранить профиль в файловой системе
$profile->save('my_profile.icc')
#Установка цветовых профилей
public function setProfile(ProfileInterface $profile): ImageInterface
Эта функция применяет заданный ICC-профиль цвета к текущему экземпляру изображения. Функция принимает в качестве аргумента экземпляр ProfileInterface::class.
#Параметры
| Name | Type | Description |
|---|---|---|
| profile | ProfileInterface | Целевой ICC-профиль |
#Пример
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
use Intervention\Image\Colors\Profile;
// Create new manager instance with desired driver
$manager = new ImageManager(Driver::class);
// reading an image
$image = $manager->read('images/example.jpg');
// set the new color profile
$image->setProfile(Profile::fromPath('profiles/profile.icc'));
#Удаление цветовых профилей
public function removeProfile(): ImageInterface
Удаляет все цветовые профили из текущего изображения.
#Пример
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// Создать новый экземпляр менеджера с нужным драйвером
$manager = new ImageManager(Driver::class);
// Прочитать изображение и удалить профиль
$image = $manager->read('images/example.jpg')->removeProfile();
#Прозрачность
Intervention Image поддерживает форматы изображений с альфа-каналами. Прозрачные области сохраняются, если формат вывода поддерживает прозрачность.
Если формат вывода не поддерживает прозрачность, альфа-канал сохранить нельзя. В этом случае прозрачные области будут смешаны с непрозрачным цветом. Этот цвет можно задать заранее в начальной конфигурации менеджера изображений или передать как необязательный аргумент в следующем методе. Также возможно установить или получить цвет смешивания во время выполнения.
#Смешивание прозрачных областей с цветом
public function blendTransparency(mixed $color = null): ImageInterface
При переходе к формату изображения без поддержки прозрачности прозрачность автоматически заменяется на настроенный цвет смешивания, но это можно сделать и вручную. Этот вызов функции также можно применить к форматам изображений, которые действительно поддерживают прозрачность.
Параметр color можно опционально использовать для задания цвета в распространённых цветовых форматах. По умолчанию используется текущий или ранее настроенный цвет смешивания. Обратите внимание, что любые значения прозрачности в цвете смешивания будут проигнорированы.
#Параметры
| Name | Type | Description |
|---|---|---|
| color | mixed | Цвет для замены прозрачных областей (необязательно). |
#Пример
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
// Создать новый экземпляр менеджера с нужным драйвером и цветом смешивания по умолчанию
$manager = new ImageManager(Driver::class);
// Прочитать прозрачное изображение
$image = $manager->read('images/example.png');
// Объединить прозрачные области с оранжевым
$image->blendTransparency('f50');
#Чтение цвета смешивания
public function blendingColor(): ColorInterface
Возвращает текущий установленный цвет смешивания в виде экземпляра ColorInterface::class. Это соответствует либо цвету, изначально настроенному через ImageManager, либо последнему установленному цвету смешивания.
#Установка цвета смешивания
public function setBlendingColor(mixed $color): ImageInterface
Устанавливает новый цвет смешивания в конфигурации текущего экземпляра изображения. Этот цвет будет использоваться по умолчанию для всех последующих операций, использующих цвет смешивания, перекрывая исходное значение, заданное в конфигурации ImageManager.
#Параметры
| Name | Type | Description |
|---|---|---|
| color | mixed | Новый цвет смешивания в поддерживаемых цветовых форматах. |
#Пример
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
// создать новый экземпляр менеджера с нужным драйвером и красным в качестве цвета смешивания
$manager = new ImageManager(Driver::class, blendingColor: 'ff0000');
// прочитать изображение
$image = $manager->read('images/example.png');
// прочитать настроенный цвет смешивания
$blendingColor = $image->blendingColor(); // 'ff0000'
// установить серый цвет смешивания
$image->setBlendingColor('cccccc');
// прочитать последний установленный цвет смешивания
$blendingColor = $image->blendingColor(); // 'cccccc'