optimitzar imatges en laravel

Created at: 2024-08-31 17:32:24 | Updated at: 2024-08-31 17:32:24

Paso 1: Instalar el Paquete spatie/laravel-image-optimizer

Primero, instala el paquete necesario usando Composer:

composer require spatie/laravel-image-optimizer

Paso 2: Crear un Comando Artisan para Optimizar las Imágenes

Vamos a crear un nuevo comando Artisan para optimizar todas las imágenes en los directorios mencionados.

  1. En la terminal, ejecuta el siguiente comando para crear el comando:
  2. php artisan make:command OptimizeImages
  3. Esto generará un archivo en app/Console/Commands/OptimizeImages.php.


Paso 3: Editar el Archivo OptimizeImages.php

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");
        }
    }
}

Paso 4: Ejecutar el Comando

Después de guardar el archivo, puedes optimizar todas las imágenes ejecutando el siguiente comando en la terminal:

php artisan images:optimize

Explicación

Paso 5: Programar la Ejecución Automática (Opcional)

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();
}

Resumen

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.

Back to Posts
optimitzar imatges en laravel

Title

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.