#Codificar imágenes
#Codificar imágenes con objetos codificadores
public Image::encode(EncoderInterface $encoder = new AutoEncoder()): EncodedImage
Este método codifica la imagen con el objeto codificador proporcionado. Actualmente están disponibles los siguientes codificadores.
Intervention\Image\Encoders\AutoEncoder::classIntervention\Image\Encoders\JpegEncoder::classIntervention\Image\Encoders\WebpEncoder::classIntervention\Image\Encoders\PngEncoder::classIntervention\Image\Encoders\GifEncoder::classIntervention\Image\Encoders\AvifEncoder::classIntervention\Image\Encoders\BmpEncoder::classIntervention\Image\Encoders\TiffEncoder::classIntervention\Image\Encoders\Jpeg2000Encoder::classIntervention\Image\Encoders\HeicEncoder::class
Si no se proporciona un codificador, se utilizará AutoEncoder, que intentará detectar el formato de salida automáticamente según el formato original de la imagen.
#Parámetros
| Nombre | Tipo | Descripción |
|---|---|---|
| encoder (optional) | EncoderInterface | Codificador de imagen con el que se transforma la imagen |
#Ejemplo
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
use Intervention\Image\Encoders\AutoEncoder;
use Intervention\Image\Encoders\WebpEncoder;
use Intervention\Image\Encoders\GifEncoder;
// Crear una nueva instancia de ImageManager con el driver deseado
$manager = new ImageManager(Driver::class);
// Leer imagen jpeg
$image = $manager->read('images/example.jpg');
// Codificar en el mismo formato que se leyó originalmente
$encoded = $image->encode(); // Intervention\Image\EncodedImage
// Codificar en el mismo formato que se leyó originalmente pero con cierta calidad
$encoded = $image->encode(new AutoEncoder(quality: 10)); // Intervention\Image\EncodedImage
// Codificar jpeg como formato webp
$encoded = $image->encode(new WebpEncoder(quality: 65)); // Intervention\Image\EncodedImage
// El resultado será en formato gif
$encoded = $image->encode(new GifEncoder()); // Intervention\Image\EncodedImage
#Codificar imágenes por tipo de medio (MIME)
public Image::encodeByMediaType(null|string|MediaType $type = null, mixed ...$options): EncodedImage
Codifica una imagen al tipo de medio (MIME) especificado.
Si no se especifica un tipo de medio, la imagen se codificará al formato correspondiente al tipo MIME de la imagen originalmente leída.
#Parámetros
| Nombre | Tipo | Descripción |
|---|---|---|
| type (optional) | null, string or MediaType | Tipo de medio (MIME) destino en el que se codifica la imagen. Por defecto se usa el tipo de medio original. |
| options (optional) | mixed | Parámetros de opción según el formato de salida. |
#Ejemplo
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
use Intervention\Image\MediaType;
// Crear nueva instancia de ImageManager y leer imagen webp
$image = new ImageManager(Driver::class)
->read('images/example.webp');
// El resultado codificado será el mismo que el original
$encoded = $image->encodeByMediaType();
// El resultado codificado será el mismo que el original pero con baja calidad
$encoded = $image->encodeByMediaType(quality: 10);
// El resultado codificado será un JPEG progresivo
$encoded = $image->encodeByMediaType('image/jpeg', progressive: true, quality: 20);
// El resultado será en formato gif
$encoded = $image->encodeByMediaType('image/gif');
// O usar un miembro del enum MediaType
$encoded = $image->encodeByMediaType(MediaType::IMAGE_GIF);
#Codificar imágenes por ruta de archivo
public Image::encodeByPath(null|string $path = null, mixed ...$options): EncodedImage
Codifica la imagen en el formato representado por la extensión de la ruta de archivo indicada. Puede añadir parámetros opcionales para definir las opciones del codificador. Si no se proporciona una ruta, la imagen se codificará en el formato de la imagen leída originalmente.
Tenga en cuenta que este método no escribe en la ruta proporcionada, sino que solo utiliza esta información para extraer el formato de destino.
#Parámetros
| Nombre | Tipo | Descripción |
|---|---|---|
| path (optional) | null or string | Ruta de archivo desde la cual se extrae el formato de destino. Por defecto se usa la ruta de archivo original. |
| options (optional) | mixed | Parámetros de opción según el formato de salida. |
#Ejemplo
use Intervention\Image\ImageManager;
// image file path
$path = 'images/example.png';
// Crear nueva instancia de ImageManager y leer desde la ruta
$image = new ImageManager::imagick() ->read($path);
// El formato codificado será el mismo que el original
$encoded = $image->encodeByPath();
// El formato resultante será el mismo que el original pero con baja calidad
$encoded = $image->encodeByPath(quality: 10);
// El formato resultante será jpeg porque "jpg" representa el formato jpeg
$encoded = $image->encodeByPath('images/example.jpg', progressive: true, quality: 10);
// El resultado será en formato gif
$encoded = $image->encodeByPath('images/example.gif');
#Codificar imágenes por extensión de archivo
public Image::encodeByExtension(null|string|FileExtension $extension = null, mixed ...$options): EncodedImage
Codifica la imagen en el formato representado por la extensión de archivo proporcionada. Defina la calidad de la imagen con el segundo parámetro opcional. Si no se proporciona una extensión, la imagen se codificará en el formato de la imagen leída originalmente.
#Parámetros
| Nombre | Tipo | Descripción |
|---|---|---|
| extension (optional) | null, string or FileExtension | Extensión de archivo que determina el formato de destino. Por defecto se usa la extensión de archivo original. |
| options (optional) | mixed | Parámetros de opción según el formato de salida. |
#Ejemplo
use Intervention\Image\ImageManager;
// Crear nueva instancia de ImageManager y leer imagen
$image = new ImageManager::gd() ->read('example.jpg');
// El formato resultante será el mismo que el original
$encoded = $image->encodeByExtension();
// El formato resultante será el mismo que el original pero con baja calidad
$encoded = $image->encodeByExtension(quality: 10);
// El resultado será en formato jpeg
$encoded = $image->encodeByExtension('jpg', progressive: true, quality: 10);
// El resultado será en formato PNG
$encoded = $image->encodeByExtension('png');
// Alternativamente usar un miembro del enum FileExtension
$encoded = $image->encodeByExtension(FileExtension::PNG);
#Codificar con métodos abreviados
Existe un método abreviado correspondiente para cada formato de imagen, que puede llamarse directamente desde el objeto Image.
#Codificar en formato JPEG
public Image::toJpeg(int $quality = 75, bool $progressive = false, null|bool $strip = null): EncodedImage
Codifica la instancia de imagen actual en formato JPEG con la calidad especificada, que va de 0 (baja calidad) a 100 (mejor calidad).
#Parámetros
| Nombre | Tipo | Descripción |
|---|---|---|
| quality (optional) | integer | Calidad de codificación entre 0 y 100. Por defecto 75. |
| progressive (optional) | boolean | Opción para codificar la imagen en formato JPEG progresivo. Desactivada por defecto. |
| strip | bool | (optional) Determina si los metadatos de la imagen deben eliminarse durante la codificación. Valor por defecto según la Configuración del driver. |
#Ejemplo
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
// Crear nueva instancia de ImageManager con el driver deseado
$manager = new ImageManager(Driver::class);
// Leer imagen gif
$image = $manager->read('images/example.gif');
// Codificar datos jpeg
$encoded = $image->toJpeg(90); // Intervention\Image\EncodedImage
#Codificar en formato WebP
public Image::toWebp(int $quality = 75, null|bool $strip = null): EncodedImage
Codifica la instancia de imagen actual en el formato gráfico WebP con la calidad especificada, que va de 0 (baja calidad) a 100 (mejor calidad).
#Parámetros
| Nombre | Tipo | Descripción |
|---|---|---|
| quality (optional) | integer | Calidad de codificación. Por defecto 75. |
| strip | bool | (optional) Determina si los metadatos de la imagen deben eliminarse durante la codificación. Valor por defecto según la Configuración del driver. |
#Ejemplo
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// Crear nueva instancia de ImageManager con el driver deseado
$manager = new ImageManager(new Driver());
// Leer imagen gif
$image = $manager->read('images/example.gif');
// Codificar datos webp
$encoded = $image->toWebp(60); // Intervention\Image\EncodedImage
#Codificar en formato PNG
public Image::toPng(bool $interlaced = false, bool $indexed = false): EncodedImage
Este método codifica la instancia de imagen actual en formato PNG. Se pueden definir más detalles del formato mediante los parámetros. Es posible establecer el método de codificación en interlaced, lo que permite que la imagen se represente de forma progresiva; por defecto se usa el guardado secuencial no entrelazado.
La segunda opción indexed determina si la imagen se guarda con una paleta de colores indexada (limitada). Con esta opción, los colores se reducen automáticamente, lo que resulta en tamaños de archivos más pequeños, pero puede conllevar pérdida de calidad en la coloración. Por defecto, el codificador siempre produce formato truecolor.
Tenga en cuenta que el driver GD para salida PNG con paleta de colores indexada solo admite transparencia binaria. Esto significa que los colores pueden ser completamente transparentes o completamente opacos. La semitransparencia no es posible con GD.
| Nombre | Tipo | Descripción |
|---|---|---|
| interlaced (optional) | bool | Opción para codificar la imagen entrelazada. Desactivada por defecto. |
| indexed (optional) | bool | Opción para codificar en PNG con una paleta de colores indexada. Por defecto true color (no indexado). |
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
// Crear nueva instancia de ImageManager con el driver deseado
$manager = new ImageManager(Driver::class);
// Leer imagen jpg
$image = $manager->read('images/example.jpg');
// Codificar como imagen PNG truecolor
$encoded = $image->toPng(); // Intervention\Image\EncodedImage
// Codificar en formato png con una paleta de colores indexada
$encoded = $image->toPng(indexed: true); // Intervention\Image\EncodedImage
#Codificar en formato GIF
public Image::toGif(bool $interlaced = false): EncodedImage
Codifica la instancia de imagen actual en formato GIF.
Precaución: la firma ha cambiado en la versión 3.1 al eliminar el parámetro color_limit
| Nombre | Tipo | Descripción |
|---|---|---|
| interlaced (optional) | bool | Opción para codificar la imagen entrelazada. Desactivada por defecto. |
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
// Crear nueva instancia de ImageManager con el driver deseado
$manager = new ImageManager(new Driver());
// Leer imagen jpg
$image = $manager->read('images/example.jpg');
// Codificar datos gif
$encoded = $image->toGif(); // Intervention\Image\EncodedImage
#Codificar en formato Windows Bitmap
public Image::toBitmap(): EncodedImage
Codifica la instancia de imagen actual en formato Windows Bitmap.
Precaución: la firma ha cambiado en la versión 3.1 al eliminar el parámetro color_limit
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// Crear nueva instancia de ImageManager con el driver deseado
$manager = new ImageManager(Driver::class);
// Leer imagen jpg
$image = $manager->read('images/example.jpg');
// Codificar datos bitmap
$encoded = $image->toBmp(); // Intervention\Image\EncodedImage
#Codificar en formato de archivo de imagen AV1 (AVIF)
public Image::toAvif(int $quality = 75): EncodedImage
Codifica la instancia de imagen actual en formato AVIF con la calidad especificada, que va de 0 (baja calidad) a 100 (mejor calidad).
| Nombre | Tipo | Descripción |
|---|---|---|
| quality (optional) | integer | Calidad de codificación. Por defecto 75. |
| strip | bool | (optional) Determina si los metadatos de la imagen deben eliminarse durante la codificación. Valor por defecto según la Configuración del driver. |
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// Crear nueva instancia de ImageManager con el driver deseado
$manager = new ImageManager(new Driver());
// Leer imagen jpg
$image = $manager->read('images/example.jpg');
// Codificar imagen avif
$encoded = $image->toAvif(60); // Intervention\Image\EncodedImage
#Codificar en formato TIFF
public Image::toTiff(int $quality = 75): EncodedImage
Codifica la instancia de imagen actual en formato TIFF con la calidad especificada, que va de 0 (baja calidad) a 100 (mejor calidad).
| Nombre | Tipo | Descripción |
|---|---|---|
| quality (optional) | integer | Calidad de codificación. Por defecto 75. |
| strip | bool | (optional) Determina si los metadatos de la imagen deben eliminarse durante la codificación. Valor por defecto según la Configuración del driver. |
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// Crear nueva instancia de ImageManager con el driver deseado
$manager = new ImageManager(new Driver());
// Leer imagen jpg
$image = $manager->read('images/example.jpg');
// Codificar en formato tiff
$encoded = $image->toTiff(60); // Intervention\Image\EncodedImage
#Codificar en formato JPEG 2000
public Image::toJpeg2000(int $quality = 75): EncodedImage
Codifica la instancia de imagen actual en formato JPEG 2000 con la calidad especificada, que va de 0 (baja calidad) a 100 (mejor calidad).
| Nombre | Tipo | Descripción |
|---|---|---|
| quality (optional) | integer | Calidad de codificación. Por defecto 75. |
| strip | bool | (optional) Determina si los metadatos de la imagen deben eliminarse durante la codificación. Valor por defecto según la Configuración del driver. |
use Intervention\Image\ImageManager;
// Crear nueva instancia de ImageManager con el driver deseado
$manager = ImageManager::imagick();
// Leer imagen en formato png
$image = $manager->read('images/example.png');
// Codificar en formato jpeg 2000
$encoded = $image->toJpeg2000(90); // Intervention\Image\EncodedImage
#Codificar en formato HEIC
public Image::toHeic(int $quality = 75): EncodedImage
Codifica la instancia de imagen actual en formato HEIC con la calidad especificada, que va de 0 (baja calidad) a 100 (mejor calidad).
| Nombre | Tipo | Descripción |
|---|---|---|
| quality (optional) | integer | Calidad de codificación. Por defecto 75. |
| strip | bool | (optional) Determina si los metadatos de la imagen deben eliminarse durante la codificación. Valor por defecto según la Configuración del driver. |
use Intervention\Image\ImageManager;
// Crear nueva instancia de ImageManager con el driver deseado
$manager = ImageManager::imagick();
// Leer png format
$image = $manager->read('images/example.jpg');
// Codificar imagen heic
$encoded = $image->toHeic(60); // Intervention\Image\EncodedImage
#Manejo de datos de imagen codificados
Los métodos de codificación mencionados devuelven un objeto Intervention\Image\EncodedImage. Con esta instancia puede decidir cómo proceder con los datos codificados.
#Convertir datos de imagen codificados a cadena
public EncodedImage::__toString(): string
Este método puede usarse para obtener los datos binarios de la imagen como una cadena. Esto es particularmente útil si se van a procesar con otras bibliotecas o transferir a un almacenamiento de datos remoto (como S3).
#Ejemplo
use Intervention\Image\ImageManager;
use Just\An\Example\CloudStorage;
// Crear nueva instancia de ImageManager con el driver deseado
$manager = ImageManager::imagick();
// Redimensionar imagen gif
$image = $manager
->read('images/example.gif')
->scale(height: 200);
// Codificar en formato jpeg y convertir el resultado a string
$imagedata = (string) $image->toJpeg();
// Guardar en el servicio de datos imaginario
CloudStorage::put('example.jpg', $imagedata);
#Guardar datos de imagen codificados en el sistema de archivos
public EncodedImage::save(string $filepath, mixed ...$options): void
Este método escribe los datos del objeto en la ruta indicada en el sistema de archivos local. La estructura de carpetas correspondiente debe existir y ser escribible.
#Parámetros
| Nombre | Tipo | Descripción |
|---|---|---|
| filepath | string | Ruta al archivo en el sistema de archivos. |
| options (optional) | mixed | Parámetros de opción según el formato de salida. |
#Ejemplo
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// Crear nueva instancia de ImageManager con el driver deseado
$manager = new ImageManager(Driver::class);
// Leer imagen gif
$image = $manager->read('images/example.gif');
// Guardar archivo JPEG progresivo con baja calidad
$encoded = $image->toJpeg()->save('images/test.jpg', progressive: true, quality: 10);
#Crear esquema Data URI
public EncodedImage::toDataUri(): string
Este método toma los datos de imagen ya codificados y los envuelve en un esquema data URI codificado en base64.
#Ejemplo
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
// Crear nueva instancia de ImageManager con el driver deseado
$manager = new ImageManager(new Driver());
// Leer imagen gif
$image = $manager->read('images/example.gif');
// Codificar a data URI de gif
$data_uri = $image->toGif()->toDataUri();
#Transformar imagen codificada a puntero de archivo
public EncodedImage::toFilePointer(): resource
Cree un recurso de puntero de archivo para manejar los datos de imagen codificados.
#Ejemplo
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// Crear nueva instancia de ImageManager con el driver deseado
$manager = new ImageManager(Driver::class);
// Leer imagen gif
$image = $manager->read('images/example.gif');
// Crear puntero de archivo
$pointer = $image->toJpeg()->toFilePointer();
#Obtener tipo de medio (MIME) de una imagen codificada
public EncodedImage::mediaType(): string
Este método devuelve el tipo de medio (MIME) de la imagen codificada.
#Ejemplo
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// Crear nueva instancia de ImageManager con el driver deseado
$manager = new ImageManager(new Driver());
// Leer imagen gif
$image = $manager->read('images/example.gif');
// "image/jpeg"
$mimetype = $image->toJpeg()->mediaType();
#Escribir imágenes directamente
#Codificar y guardar combinado
public Image::save(null|string $path = null, mixed ...$options): ImageInterface
Este método facilita iniciar el proceso de guardado directamente desde el objeto image sin tener que pasar por un objeto EncodedImage, y codifica y escribe los datos de la imagen en una sola llamada.
El formato resultante de la imagen se define por la extensión de archivo de la ruta proporcionada. Si no se proporciona una ruta, se usará el formato de la imagen leída originalmente. Defina la calidad de la imagen usando el segundo parámetro.
La imagen codificada se guarda en la ruta indicada en el sistema de archivos local. La estructura de carpetas correspondiente debe existir y ser escribible.
A diferencia de los demás métodos de codificación, save() devuelve un objeto Image en lugar de un objeto EncodedImage.
#Parámetros
| Nombre | Tipo | Descripción |
|---|---|---|
| path (optional) | null or string | Ruta de archivo desde la cual se extrae el formato de destino. Por defecto se usa la ruta original. |
| options (optional) | mixed | Parámetros de opción según el formato de salida. |
#Ejemplo
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// Crear nueva instancia de ImageManager con el driver deseado
$manager = new ImageManager(Driver::class);
// Leer imagen jpeg
$image = $manager->read('images/example.jpg');
// Sobrescribir el archivo en "images/example.jpg" con baja calidad
$image->save(quality: 10);
// Codificar jpeg como png y guardar en un archivo nuevo
$image->save('images/example.png');
// Codificar y guardar JPEG progresivo con baja calidad
$image->save('images/example.jpg', quality: 10, progressive: true);