#Laravel
Intervention Image puede integrarse fácilmente en una aplicación Laravel con el paquete de integración oficial. Este paquete proporciona un proveedor de servicios de Laravel, una fachada, un archivo de configuración publicable y más.
#Instalación
En lugar de instalar Intervention Image directamente, solo es necesario integrar el paquete intervention/image-laravel. Las bibliotecas base correspondientes se instalan automáticamente también.
composer require intervention/image-laravel
#Configuración a nivel de aplicación
La extensión incluye un archivo de configuración global que es reconocido por Laravel. Por lo tanto, es posible almacenar las opciones de configuración de Intervention Image de forma centralizada y no tener que definirlas individualmente cada vez que invoque al gestor de imágenes.
El archivo de configuración puede copiarse a la aplicación con el siguiente comando.
php artisan vendor:publish --provider="Intervention\Image\Laravel\ServiceProvider"
Este comando publicará el archivo de configuración config/image.php. Aquí puede establecer el driver deseado y sus opciones de configuración para Intervention Image. Por defecto, la librería está configurada para usar la biblioteca GD para el procesamiento de imágenes.
El archivo de configuración tiene este aspecto.
return [
/*
|--------------------------------------------------------------------------
| Controlador de imágenes
|--------------------------------------------------------------------------
|
| Intervention Image soporta “GD Library” y “Imagick” para procesar imágenes
| internamente. Dependiendo de su configuración de PHP, puede elegir uno de ellos.
|
| Opciones incluidas:
| - \Intervention\Image\Drivers\Gd\Driver::class
| - \Intervention\Image\Drivers\Imagick\Driver::class
|
*/
'driver' => \Intervention\Image\Drivers\Gd\Driver::class,
/*
|--------------------------------------------------------------------------
| Opciones de configuración
|--------------------------------------------------------------------------
|
| Estas opciones controlan el comportamiento de Intervention Image.
|
| - "autoOrientation" controla si una imagen importada debe ser
| rotada automáticamente de acuerdo con cualquier dato Exif existente.
|
| - "decodeAnimation" decide si una imagen posiblemente animada se
| decodifica como tal o si la animación se descarta.
|
| - "blendingColor" define el color de mezcla predeterminado.
|
| - "strip" controla si metadatos como etiquetas exif deben eliminarse al
| codificar imágenes.
*/
'options' => [
'autoOrientation' => true,
'decodeAnimation' => true,
'blendingColor' => 'ffffff',
'strip' => false,
]
];
Puede leer más sobre las diferentes opciones para selección de driver, cómo establecer opciones para orientación automática, decodificación de animaciones y mezcla de color.
#Interfaz de fachada estática
Este paquete también integra el acceso al punto de entrada central de Intervention Image, el ImageManager::class, mediante una fachada estática. La llamada proporciona acceso al gestor de imágenes configurado centralmente mediante el patrón singleton.
El siguiente ejemplo de código muestra cómo leer una imagen desde una petición de subida usando la fachada de imagen en una ruta de Laravel y guardarla en disco con un nombre de archivo aleatorio.
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use Intervention\Image\Laravel\Facades\Image;
Route::get('/', function (Request $request) {
$upload = $request->file('image');
$image = Image::read($upload)
->resize(300, 200);
Storage::put(
Str::random() . '.' . $upload->getClientOriginalExtension(),
$image->encodeByExtension($upload->getClientOriginalExtension(), quality: 70)
);
});
#Macro de respuesta de imagen
image(Image $image, null|string|Format|MediaType|FileExtension $format = null, mixed ...$options)
El paquete incluye un macro de respuesta que puede usarse para codificar elegantemente un recurso de imagen y convertirlo en una respuesta HTTP en un solo paso.
La macro se encarga automáticamente de las cabeceras HTTP en la respuesta que corresponden a la imagen y al formato de salida deseado.
El siguiente ejemplo de código muestra cómo leer una imagen desde el disco, aplicar modificaciones y utilizar la macro de respuesta de imagen para codificarla y enviar la imagen de vuelta al usuario en una sola llamada. Solo se requiere el primer parámetro.
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Storage;
use Intervention\Image\Format;
use Intervention\Image\Laravel\Facades\Image;
Route::get('/', function () {
$image = Image::read(Storage::get('example.jpg'))
->scale(300, 200);
return response()->image($image, Format::WEBP, quality: 65);
});
#Symfony
Intervention Image también puede integrarse en el framework Symfony. Una forma conveniente es usar el bundle de integración oficial.
Aunque el uso de esta librería de integración no es absolutamente obligatorio, ofrece una forma conveniente de centralizar la configuración en el framework Symfony.
#Instalación
En lugar de instalar Intervention Image directamente, solo es necesario requerir el paquete bundle intervention/image-symfony. Las dependencias correspondientes se instalan automáticamente también.
composer require intervention/image-symfony
#Configuración a nivel de aplicación
Tras la instalación, puede activar el bundle en el archivo config/bundes.php de su aplicación Symfony insertando la siguiente línea en el array.
return [
// ...
Intervention\Image\Symfony\InterventionImageBundle::class => ['all' => true],
];
Ahora puede configurar el driver de Intervention Image. Por defecto, el bundle utiliza la biblioteca GD con Intervention Image. Esta y otras opciones pueden configurarse creando un archivo config/packages/intervention_image.yaml y estableciendo la clase del driver y las opciones predeterminadas como sigue.
intervention_image:
driver: Intervention\Image\Drivers\Gd\Driver
options:
autoOrientation: true
decodeAnimation: true
blendingColor: 'ffffff'
strip: false
Primero, elija entre los dos drivers suministrados Intervention\Image\Drivers\Gd\Driver y Intervention\Image\Drivers\Imagick\Driver, por ejemplo.
A continuación puede usar las opciones para determinar el comportamiento de la librería. Lea más sobre las diferentes opciones para selección de driver, cómo establecer opciones para orientación automática, decodificación de animaciones y mezcla de color.
#Inyección de dependencias
La integración está ahora completa y es posible acceder al ImageManager mediante inyección de dependencias.
namespace App\Controller;
use Intervention\Image\ImageManager;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class ExampleController extends AbstractController
{
#[Route('/')]
public function example(ImageManager $manager): Response
{
$image = $manager->read('images/example.jpg');
}
}