Reducir el tamaño de una imagen en Laravel

¿Cómo reducir el tamaño y peso de una imagen con Laravel PHP?

Reducir el tamaño de una imagen en Laravel

Laravel nos proporciona una forma fácil y eficiente para reducir el tamaño y peso usando Image Intervention, para gestionar el tamaño y peso de una imagen

¿Cómo reducir el tamaño de una imagen en Laravel PHP?

Para reducir el tamaño de una foto o imagen debemos procesarla para obtener un tamaño menor y un peso menor mediante el uso de librerías que hacen más fácil la implementación.

En el desarrollo web la imágenes son una parte muy esencial en la comunicación con el usuario, por ello es necesario tener buenas prácticas de desarrollo, muy cuidadosas y más aún cuando se trata de imágenes. Y bueno Laravel nos permite controlar el proceso y/o tratamiento de imágenes. Algunas aclaraciones que debes tener en cuenta:

  • El tamaño es cuan grande es una imagen visualmente, se mide en pixeles.
  • El peso es la cantidad de bytes ó Kb ó Mb que tiene la imagen y se mide en puntos por pulgada dpi llamado tambien resolución

Image Intervention

Pues bien, en Laravel se puede usar una librería "Image Intervention" para la gestión de imágenes; el siguiente script nos permite:

  1. Reducir el peso
  2. Reducir el tamaño
  3. Renombrar la imagen
  4. Salvarlo en una ruta del servidor

Instalación con Composer

Para instalar dicha librería debemos tener instalado Composer y digitar el siguiente comando Artisan:

composer require intervention/image

Después de que haya instalado, abra su archivo de configuración de Laravel config/app.php y agregue las siguientes líneas. En el array $providers, agregue los proveedores de servicios para este paquete.

Código Php

Intervention\Image\ImageServiceProvider::class

Agregue el facade de este paquete al array $aliases:

Código Php

'Image' => Intervention\Image\Facades\Image::class

as :

Comando Artisan

 php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravel5"

 


La implementación del código:

El siguiente es para redimensionar la imagen a 600 x 400px.  En un controlador dentro del método Store o Edit puede ser de la siguiente manera:

En la vista

En esta ocación estoy usando LaravelCollective aunque ya esta desfasado, pero la idea es solo declarar un input de tipo file con el name='urlfoto'.

<div class="form-group">
                {!! Form::label('urlfoto','Imagen (600x400px)',['class'=>'control-label']) !!}<br>
                <img src="/img/posts/default.jpg" class="img-thumbnail center-block">
                {!! Form::file('urlfoto',['class'=>'form-control']) !!}
</div>

En nuestro controlador

Debes llamar a la clase de la siguiente forma:

use Intervention\Image\ImageManagerStatic as Image;

Y en el método store  podemos implementar el siguiente código PHP:

if ($request->hasFile('urlfoto')){
                $urlfoto    = $request->file('urlfoto');
                $nombre     = 'nuevonombre'.$urlfoto->guessExtension();
                $ruta=public_path('/img/'.$nombre);
                Image::make($urlfoto->getRealPath())
                    ->resize(600,400, function ($constraint){ 
                        $constraint->aspectRatio();
                    })
                    ->save($ruta,72);
            }

En este caso estamos redimensionando cualquier tamaño de imagen subida a 600px de ancho por 400px de alto, además estamos reduciendo el peso con 72

Para descargar el recurso de forma gratuita { crea una cuenta } gratis .

Descarga código fuente

ENTRAR PARA DESCARGAR 7

Redactado por: , Leido 9966 veces

CURSOS DE PROGRAMACIÓN CON PROYECTOS

© Todos los derechos reservados Codea App FullStack | Cursos de programación avanzados | 2020 - 2021