Идёт обновление сайта. Несколько дней возможны сбои в оформлении и переводах. Документация работает — если страница выглядит сломанной, обновите её позже.

Документация
L Laravel L intervention/image
Войти
Главная image 3.x Цвета и прозрачность

Цвета и прозрачность

3.x 7 мар 2026 г.

#Информация о цвете

#Чтение цветов определённых пикселей

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\Colorspace
  • Intervention\Image\Colors\Cmyk\Colorspace
  • Intervention\Image\Colors\Hsv\Colorspace
  • Intervention\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'