✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Cargar y cambiar el tamaño de varias imágenes en Laravel

268

Aparte de este blog, estoy ejecutando un canal de YouTube donde comparto los videos tutoriales. Recientemente, uno de los suscriptores del canal de YouTube preguntó sobre cómo cambiar el tamaño de varias imágenes en Laravel. Quieren cambiar el tamaño de varias imágenes de una vez. En este artículo, estudiamos cómo cargar y cambiar el tamaño de varias imágenes en Laravel.

Intervention Image es una biblioteca de código abierto que nos permite manipular imágenes. Voy a usar esta biblioteca para cambiar el tamaño de las imágenes.

Cargar y cambiar el tamaño de varias imágenes en Laravel

Empezando

Para lograr nuestro objetivo, debe instalar y configurar la biblioteca de imágenes de intervención en el proyecto Laravel. Abra la terminal en el directorio raíz de su proyecto y ejecute el comando:

composer require intervention/image

Una vez instalada la biblioteca, abra el config/app.phparchivo y agregue proveedores de servicios, fachada en él. Agregue los proveedores de servicios para este paquete a la $providersmatriz.

InterventionImageImageServiceProvider::class,

Agregue la fachada a la $aliasesmatriz.

'Image' => InterventionImageFacadesImage::class,

A continuación, necesitamos un directorio donde almacenamos nuestros archivos cargados. Laravel Filesystem proporciona un disco público para almacenar los archivos. El disco público contiene archivos que son de acceso público. Encontrará los archivos cargados en la storage/app/publiccarpeta. Para acceder a estos archivos en la web, debe crear un enlace simbólico desde public/storagehasta storage/app/public.

Crea un enlace simbólico usando el comando:

php artisan storage:link

Este comando crearía una carpeta de almacenamiento en el directorio público. Aquí es donde almacenamos nuestros archivos.

Cargar y cambiar el tamaño de las imágenes en Laravel

Para cargar archivos en un servidor, necesita un formulario. Creemos un formulario donde puede seleccionar varios archivos para cargar en un servidor. A continuación se muestra un código de muestra del formulario que irá dentro de su archivo de vista.

<form action="{{ url('ROUTE HERE') }}" method="post" enctype="multipart/form-data">
    <div class="form-group">
        <label for="exampleInputFile">File input</label>
        <input type="file" name="profile_image[]" id="exampleInputFile" multiple />
    </div>
    {{ csrf_field() }}
    <button type="submit" class="btn btn-default">Submit</button>
</form>

En el formulario, he tomado un nombre de entrada de archivo como ‘profile_image []’ que envía una serie de archivos al servidor. Además, agregué un atributo ‘múltiple’ que nos permite seleccionar varios archivos. Reemplace el marcador de posición ROUTE_URL con su valor real.

Como necesitamos cargar y cambiar el tamaño de las imágenes, en el controlador agregue dos fachadas de la siguiente manera.

<?php
 
namespace AppHttpControllers;
 
use IlluminateHttpRequest;
use Image; //Intervention Image
use IlluminateSupportFacadesStorage; //Laravel Filesystem
 
class ImageController extends Controller
{
 
}

Al agregar la fachada, puede llamar a las funciones de cambio de tamaño de la biblioteca de imágenes de intervención. En el siguiente código, subiré los archivos en dos lugares. Uno es la imagen original. El segundo está en el directorio de miniaturas. Primero cargamos la imagen original en la carpeta de miniaturas y luego la cambiamos de tamaño.

public function store(Request $request)
{
    if ($request->hasFile('profile_image')) {
 
        foreach($request->file('profile_image') as $file){
 
            //get filename with extension
            $filenamewithextension = $file->getClientOriginalName();
 
            //get filename without extension
            $filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);
 
            //get file extension
            $extension = $file->getClientOriginalExtension();
 
            //filename to store
            $filenametostore = $filename.'_'.uniqid().'.'.$extension;
 
            Storage::put('public/profile_images/'. $filenametostore, fopen($file, 'r+'));
            Storage::put('public/profile_images/thumbnail/'. $filenametostore, fopen($file, 'r+'));
 
            //Resize image here
            $thumbnailpath = public_path('storage/profile_images/thumbnail/'.$filenametostore);
            $img = Image::make($thumbnailpath)->resize(400, 150, function($constraint) {
                $constraint->aspectRatio();
            });
            $img->save($thumbnailpath);
        }
 
        return redirect('ROUTE_URL')->with('success', "Image uploaded successfully.");
    }
}

Aquí estamos cambiando el tamaño de la imagen proporcionalmente. Al hacerlo, mantenemos la relación de aspecto y la imagen no se cortará. Estoy pasando el ancho como 400 y la altura como 150. Puede cambiar estos valores según sus necesidades.

Adelante, pruébalo. Obtendrá la versión de cambio de tamaño de las imágenes cargadas en el directorio ‘storage / profile_images / thumbnail’.

Si está buscando un cultivo duro, reemplace las líneas siguientes

$img = Image::make($thumbnailpath)->resize(400, 150, function($constraint) {
    $constraint->aspectRatio();
});
$img->save($thumbnailpath);

Con

$img = Image::make($thumbnailpath)->resize(100, 100)->save($thumbnailpath);

Espero que entiendas cómo cargar y cambiar el tamaño de varias imágenes en Laravel. Comparta sus pensamientos y sugerencias en la sección de comentarios a continuación.

Artículos relacionados

Fuente de grabación: artisansweb.net

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More