Reducir el tamaño de una imagen en Laravel

Reducir el tamaño de una imagen en Laravel

Reducir el tamaño y peso de una imagen

Reducir el tamaño de una imagen en Laravel

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

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

Descarga código fuente 7

Talvez tiene el código fuente para descargar

Ver Código Fuente

Redactado por: , Leido 11683 veces

Más tutoriales de programación LARAVEL

Codea App
Codea App FullStack

Perú, México, Colombia, España, Venezuela, Argentina, Bolivia

You Fb Tik Pin

© Todos los derechos reservados Codea App | Cursos de programación | 2020 - 2022