Reducir el tamaño y peso de una imagen
¿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
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:
Pues bien, en Laravel se puede usar una librería "Image Intervention" para la gestión de imágenes; el siguiente script nos permite:
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"
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 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>
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
Redactado por: , Leido 11683 veces
© Todos los derechos reservados Codea App | Cursos de programación | 2020 - 2022