Estamos actualizando el sitio. Durante unos días es posible que veas fallos de diseño o de traducción. La documentación sigue disponible: si una página se ve mal, recárgala más tarde.

Inicio image 3.x Colores y transparencia

Colores y transparencia

3.x 7 de mar. de 2026

#Información de color

#Leer colores de píxeles concretos

public Image::pickColor(int $x, int $y, int $frame_key = 0): ColorInterface

Lee el color del píxel especificado por las coordenadas X e Y. También puede obtener la clave del fotograma del que se toma el color. Esto solo es relevante para imágenes animadas.

#Parámetros

Nombre Tipo Descripción
x int Coordenada X de la posición del píxel
y int Coordenada Y de la posición del píxel
frame_key int Clave opcional del fotograma desde el cual se lee la información de color

#Ejemplo

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

// crear una nueva instancia del gestor con el driver deseado
$manager = new ImageManager(Driver::class);

// leer una imagen
$image = $manager->read('images/animation.gif');

// leer la información de color del fotograma 10 en la posición 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();

#Leer todos los colores de píxeles concretos en imágenes animadas

public Image::pickColors(int $x, int $y): CollectionInterface

Lee todos los colores del píxel especificado mediante las coordenadas X e Y y los devuelve en una colección. Para imágenes animadas, esta colección contendrá todos los colores de la posición indicada para todos los fotogramas. Para imágenes no animadas, la colección contendrá solo un color, ya que la imagen contiene también un solo fotograma.

#Parámetros

Nombre Tipo Descripción
x int Coordenada X de la posición del píxel
y int Coordenada Y de la posición del píxel

#Ejemplo

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

// crear una nueva instancia del gestor con el driver deseado
$manager = new ImageManager(new Driver());

// leer una imagen
$image = $manager->read('images/animation.gif');

// leer información de color en la posición
$colors = $image->pickColors(10, 10);

// primer color
$color = $colors->first();

// color para un fotograma determinado
$color = $colors->get(6);

#Transformación de colores

Una vez que los colores de los píxeles de una imagen se han leído en un objeto, dispone de más opciones.

#Convertir colores a valores en cadena

public ColorInterface::toString(): ColorInterface

Cada objeto de color también puede representarse como una cadena. Puede usar el método toString() o convertir el objeto directamente. Por supuesto, la salida depende del espacio de color correspondiente.

use Intervention\Image\ImageManager;
use Intervention\Image\Colors\Hsl\Colorspace as HslColorspace;

// crear una nueva instancia del gestor con el driver deseado
$manager = ImageManager::gd();

// leer una imagen
$image = $manager->read('images/example.png');

// leer el color del píxel
$color = $image->pickColor(20, 10);

// transformar el color a formato string
$result = $color->toString(); // "rgba(255, 255, 255, 1.0)"

// mismo resultado
$result = (string) $color;

#Convertir colores entre espacios de color

public ColorInterface::convertTo(string|ColorspaceInterface $colorspace): ColorInterface

Cada objeto de color tiene un método para convertirlo a otros espacios de color. El espacio de color de destino puede especificarse como una cadena o como un objeto. Esto funciona incluso si el driver actual no soporta el espacio de color objetivo.

Están disponibles los siguientes espacios de color.

  • 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;

// crear una nueva instancia del gestor con el driver deseado
$manager = ImageManager::imagick();

// leer una imagen
$image = $manager->read('images/example.png');

// leer el color del píxel
$color = $image->pickColor(20, 10);

$result = $color->toString(); // "rgba(0, 255, 255, 1.0)"

// transformar el color a formato hsl
$hslColor = $color->convertTo(HslColorspace::class);

$result = $hslColor->toString(); // "hsl(180, 100, 50)"

#Espacios de color

Los espacios de color compatibles dependen principalmente del driver utilizado. Mientras que el driver Imagick soporta los espacios de color RGB y CMYK, el driver GD está limitado al espacio de color RGB.

Al leer imágenes CMYK con Intervention Image usando el driver GD, las imágenes se convierten automáticamente al espacio de color RGB.

#Leer el espacio de color de la imagen

public Image::colorspace(): ColorspaceInterface

Esta función lee el espacio de color de la instancia de imagen actual.

#Ejemplo

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

// crear una nueva instancia del gestor con el driver deseado
$manager = new ImageManager(Driver::class);

// leer una imagen
$image = $manager->read('images/example.jpg');

// leer el objeto del espacio de color
$colorspace = $image->colorspace();

#Cambiar el espacio de color de la imagen

public Image::setColorspace(string|ColorspaceInterface $colorspace): ImageInterface

Esta función convierte la imagen actual al espacio de color especificado. El espacio de color objetivo puede especificarse como objeto, como nombre de clase o como una abreviatura del espacio de color.

#Parámetros

Nombre Tipo Descripción
colorspace string or ColorspaceInterface Espacio de color objetivo

#Ejemplo

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;

// crear una nueva instancia del gestor con el driver deseado
$manager = new ImageManager(new Driver());

// leer una imagen
$image = $manager->read('images/example.jpg');

// transformar la imagen a CMYK usando la abreviatura
$colorspace = $image->setColorspace('cmyk');

// transformar la imagen a RGB nuevamente usando el nombre de la clase
$colorspace = $image->setColorspace(RgbColorspace::class);

// y transformarla a CMYK nuevamente mediante un objeto
$colorspace = $image->setColorspace(new CmykColorspace());

#Perfiles de color

Actualmente, Intervention Image solo puede manejar perfiles de color con el driver ìmagick.

#Leer perfiles de color

public Image::profile(): ProfileInterface

Esta función lee el perfil de color ICC de la instancia de imagen actual. Si no se encuentra ningún perfil, se lanza un ColorException.

#Ejemplo

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

// crear una nueva instancia del gestor con el driver deseado
$manager = new ImageManager(new Driver());

// leer una imagen
$image = $manager->read('images/example.jpg');

// leer el perfil icc
$profile = $image->profile();

// guardar el perfil en el sistema de archivos
$profile->save('my_profile.icc')

#Establecer perfiles de color

public function setProfile(ProfileInterface $profile): ImageInterface

Esta función aplica un perfil de color ICC dado a la instancia de imagen actual. La función recibe como argumento una instancia de ProfileInterface::class.

#Parámetros

Nombre Tipo Descripción
profile ProfileInterface Perfil ICC objetivo

#Ejemplo

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

// crear una nueva instancia del gestor con el driver deseado
$manager = new ImageManager(Driver::class);

// leer una imagen
$image = $manager->read('images/example.jpg');

// establecer el nuevo perfil de color
$image->setProfile(Profile::fromPath('profiles/profile.icc'));

#Eliminar perfiles de color

public function removeProfile(): ImageInterface

Elimina todos los perfiles de color de la imagen actual.

#Ejemplo

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

// crear una nueva instancia del gestor con el driver deseado
$manager = new ImageManager(Driver::class);

// leer la imagen y eliminar el perfil
$image = $manager->read('images/example.jpg')->removeProfile();

#Transparencia

Intervention Image admite formatos de imagen con canales alfa. Las áreas transparentes se conservan siempre que el formato de salida soporte transparencia.

Si el formato de salida no soporta transparencia, no se puede conservar el canal alfa. En este caso, las áreas transparentes se mezclarán con un color opaco. Este color puede especificarse de antemano en la configuración inicial del ImageManager o como un argumento opcional en el siguiente método. También es posible establecer u obtener el color de mezcla en tiempo de ejecución.

#Fusionar áreas transparentes con color

public function blendTransparency(mixed $color = null): ImageInterface

Al cambiar a un formato de imagen no transparente, la transparencia se reemplaza automáticamente por el color de mezcla configurado, aunque también puede hacerse manualmente. Esta llamada de función también puede aplicarse a formatos de imagen que realmente pueden contener transparencia.

El parámetro color puede utilizarse opcionalmente para especificar un color en los formatos de color habituales. Por defecto, se usa el color de mezcla actual o el configurado anteriormente. Tenga en cuenta que cualquier valor de transparencia en el color de mezcla será ignorado.

#Parámetros

Nombre Tipo Descripción
color mixed Color para reemplazar las áreas transparentes (opcional).

#Ejemplo

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

// crear una nueva instancia del gestor con el driver deseado y color de fusión por defecto
$manager = new ImageManager(Driver::class);

// leer una imagen con transparencia
$image = $manager->read('images/example.png');

// fusionar las áreas transparentes con naranja
$image->blendTransparency('f50');

#Leer el color de mezcla

public function blendingColor(): ColorInterface

Devuelve el color de mezcla actualmente establecido como una instancia de ColorInterface::class. Esto corresponde ya sea al color configurado originalmente a través del ImageManager o al color de mezcla que se estableció más recientemente.

#Establecer el color de mezcla

public function setBlendingColor(mixed $color): ImageInterface

Establezca un nuevo color de mezcla en la configuración de la instancia de imagen actual. Este color se usará como predeterminado para todas las operaciones posteriores que utilicen un color de mezcla, sobrescribiendo el valor original definido en la configuración del ImageManager.

#Parámetros

Nombre Tipo Descripción
color mixed Nuevo color de mezcla en los formatos de color compatibles.

#Ejemplo

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

// crear nueva instancia del manager con el driver deseado y rojo como color de mezcla
$manager = new ImageManager(Driver::class, blendingColor: 'ff0000');

// leer imagen
$image = $manager->read('images/example.png');

// leer el color de mezcla configurado
$blendingColor = $image->blendingColor(); // 'ff0000'

// establecer gris como color de mezcla
$image->setBlendingColor('cccccc');

// leer el último color de mezcla establecido
$blendingColor = $image->blendingColor(); // 'cccccc'