optimitzar imatges en laravel
Created at: 2024-08-31 17:32:24 | Updated at: 2024-08-31 17:32:24
Primero, instala el paquete necesario usando Composer:
composer require spatie/laravel-image-optimizer
Vamos a crear un nuevo comando Artisan para optimizar todas las imágenes en los directorios mencionados.
php artisan make:command OptimizeImages
Abre el archivo app/Console/Commands/OptimizeImages.php y reemplaza su contenido con el siguiente código:
<?php namespace App\Console\Commands; use Illuminate\Console\Command; use Illuminate\Support\Facades\Storage; use Spatie\ImageOptimizer\OptimizerChainFactory; class OptimizeImages extends Command { protected $signature = 'images:optimize'; protected $description = 'Optimiza todas las imágenes en public/img y storage/app/public, incluyendo subdirectorios'; public function __construct() { parent::__construct(); } public function handle() { $optimizerChain = OptimizerChainFactory::create(); // Optimizar imágenes en public/img y sus subdirectorios $publicImages = Storage::allFiles('public/img'); foreach ($publicImages as $image) { $this->optimizeImage($image, $optimizerChain); } // Optimizar imágenes en storage/app/public y sus subdirectorios $storageImages = Storage::allFiles('public'); foreach ($storageImages as $image) { $this->optimizeImage($image, $optimizerChain); } $this->info('Todas las imágenes han sido optimizadas.'); } protected function optimizeImage($image, $optimizerChain) { if (preg_match('/\.(jpg|jpeg|png|gif|svg)$/i', $image)) { $optimizerChain->optimize(Storage::path($image)); $this->info("Optimized: $image"); } } }
Después de guardar el archivo, puedes optimizar todas las imágenes ejecutando el siguiente comando en la terminal:
php artisan images:optimize
Si deseas que este proceso se ejecute automáticamente, puedes agregarlo al cron de Laravel. Abre app/Console/Kernel.php y agrega lo siguiente al método schedule:
protected function schedule(Schedule $schedule) { $schedule->command('images:optimize')->weekly(); }
Este comando optimizará todas las imágenes en los directorios especificados, lo que puede mejorar significativamente el rendimiento de tu aplicación.
No valid image directory found or the category is not valid for the gallery.