22 junio, 2023
Convertir un GIF animado a formato WEBP animado usando PHP Imagick
Para convertir un GIF animado a formato WEBP animado reduciendo el tamaño de los frames del GIF usaremos la extensión Imagick de PHP en LARAVEL

Suscríbete a nuestro canal en Youtube
SuscríbirsePara convertir un GIF animado a formato WEBP animado, reduciendo el tamaño de los frames del GIF utilizando la extensión Imagick de PHP en Laravel, puedes seguir el siguiente ejemplo:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Imagick;
class ConvertController extends Controller
{
public function convertGifToWebp(Request $request)
{
$gifPath = $request->file('gif')->getRealPath();
$webpPath = 'ruta/al/archivo.webp'; // Ruta de salida para el archivo WEBP
// Crear una instancia de Imagick y establecer el formato de salida como WEBP
$image = new Imagick($gifPath);
$image->setImageFormat('webp');
$image->setOption('loop', 0); // 0 para bucle infinito, 1 para no bucle
// Reducir el tamaño de los frames del GIF
$optimizedImage = $this->resizeFrames($image);
// Configurar opciones de compresión para reducir el tamaño del archivo
$optimizedImage->setOption('lossless', 'true'); // Calidad sin pérdidas
$optimizedImage->setImageCompression(Imagick::COMPRESSION_LOSSLESSJPEG);
$optimizedImage->setImageCompressionQuality(75); // Ajusta el nivel de calidad según tus necesidades
// Guardar el archivo WEBP animado
$optimizedImage->writeImages($webpPath, true);
$optimizedImage->destroy();
return response()->download($webpPath)->deleteFileAfterSend(true);
}
private function resizeFrames(Imagick $image)
{
// Obtener el número total de frames del GIF
$frameCount = $image->getNumberImages();
// Obtener el ancho y alto deseados para los frames
$newWidth = 500; // Nuevo ancho deseado
$newHeight = 300; // Nuevo alto deseado
// Redimensionar cada frame del GIF al nuevo tamaño deseado
for ($i = 0; $i < $frameCount; $i++) {
// Obtener el frame actual
$image->setIteratorIndex($i);
// Redimensionar el frame al nuevo tamaño
$image->scaleImage($newWidth, $newHeight);
}
return $image;
}
}
En este ejemplo, hemos creado un método adicional llamado resizeFrames()
que se encarga de reducir el tamaño de cada frame del GIF al nuevo tamaño deseado. Dentro de este método, se obtiene el número total de frames del GIF y se redimensiona cada frame al nuevo ancho y alto utilizando el método scaleImage()
.
Recuerda reemplazar 'ruta/al/archivo.webp'
con la ruta deseada para el archivo de salida en formato WEBP.
El resto del código es similar a los ejemplos anteriores, donde se carga el archivo GIF, se establece el formato de salida como WEBP, se configuran las opciones de compresión y se guarda el archivo WEBP animado.
Leido 1632 veces | 2 usuarios
Descarga del código fuente Laravel de Convertir un GIF animado a formato WEBP animado usando PHP Imagick
Accede al código fuente esencial de nuestra aplicación en formato ZIP ó TXT. Ideal para desarrolladores que desean personalizar o integrar nuestra solución.
Opciones de descarga
- Usuarios Registrados: Inicia sesión para descarga inmediata.
- Nuevos Usuarios: Regístrate y descarga.