Reducir el tamaño de una imagen

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

Reducir el tamaño de una imagen

Cómo reducir el tamaño y peso de una imagen con 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

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 nuestra 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


¿Quieres el código fuente del proyecto
Reducir el tamaño de una imagen?

...por favor suscríbete gratuitamente para descargarlo

SUSCRÍBIRME

Compártelo...talvez alguién lo necesite!

Whatsapp Messenger Facebook Twitter
ó copia el link

Visitado 1138 veces | Publicado hace 1 año

Más códigos de programación en LARAVEL.

Ver scripts de LARAVEL

© Todos los derechos reservados | codea.app | Comunidad de programación web y desarrollo de aplicaciones móviles | 2020