✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Lataa ja muuta useita kuvia Laravelissa

16

Tämän blogin lisäksi käytän YouTube-kanavaa, jossa jaan video-oppaita. Äskettäin yksi YouTube-kanavan tilaajista kysyi useiden kuvien koon muuttamisesta Laravelissa. He haluavat muuttaa useita kuvia yhdellä kertaa. Tässä artikkelissa tutkitaan kuinka ladata useita kuvia Laravelissa ja muuttaa niiden kokoa.

Interventiokuva on avoimen lähdekoodin kirjasto, jonka avulla voimme käsitellä kuvia. Aion käyttää tätä kirjastoa kuvien koon muuttamiseen.

Lataa ja muuta useita kuvia Laravelissa

Päästä alkuun

Tavoitteen saavuttamiseksi sinun on asennettava ja määritettävä Intervention Image -kirjasto Laravel-projektiin. Avaa pääte projektin juurihakemistossa ja suorita komento:

composer require intervention/image

Kun kirjasto on asennettu, avaa config/app.phptiedosto ja lisää palveluntarjoajat, julkisivu siihen. Lisää tämän paketin palveluntarjoajat $providersryhmään.

InterventionImageImageServiceProvider::class,

Lisää julkisivu $aliasestaulukkoon.

'Image' => InterventionImageFacadesImage::class,

Seuraavaksi tarvitsemme hakemiston, johon tallennamme lähetetyt tiedostot. Laravel Filesystem tarjoaa julkisen levyn tiedostojen tallentamiseen. Julkinen levy sisältää tiedostoja, jotka ovat julkisesti saatavilla. Löydät ladatut tiedostot storage/app/publickansiosta. Voit käyttää näitä tiedostoja verkossa, sinun täytyy luoda symbolinen linkki public/storageon storage/app/public.

Luo symbolinen linkki komennolla:

php artisan storage:link

Tämä komento luo tallennuskansion julkiseen hakemistoon. Täällä tallennamme tiedostomme.

Lataa ja muuta kuvia Laravelissa

Tarvitset lomakkeen, jotta voit ladata tiedostoja palvelimelle. Luodaan lomake, josta voit valita useita tiedostoja lähetettäväksi palvelimelle. Alla on esimerkkikoodi lomakkeesta, joka menee näkymätiedostoon.

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

Lomakkeessa olen ottanut tiedoston syöttönimen nimellä "profile_image []", joka lähettää joukon tiedostoja palvelimelle. Lisäsin myös attribuutin ‘useita’, jonka avulla voimme valita useita tiedostoja. Korvaa paikkamerkki ROUTE_URL todellisella arvollasi.

Koska meidän on ladattava ja muutettava kuvien kokoa, lisää ohjaimeen kaksi julkisivua seuraavasti.

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

Lisäämällä julkisivun voit soittaa Intervention Image -kirjaston koon muutostoiminnot. Lähetän alla olevaan koodiin tiedostot kahteen paikkaan. Yksi on alkuperäinen kuva. Toinen on pikkukuvien hakemiston alla. Lähetämme alkuperäisen kuvan ensin pikkukansioon ja muutamme sen kokoa.

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.");
    }
}

Tässä muutamme kuvan kokoa suhteellisesti. Näin pidämme kuvasuhteen ennallaan, eikä kuva leikkaa. Ohitan leveyden 400 ja korkeuden 150. Voit muuttaa näitä arvoja vaatimuksesi mukaan.

Mene eteenpäin ja testaa se. Saat ladattujen kuvien koon version hakemistosta ‘storage / profile_images / thumbnail’.

Jos etsit kovaa satoa, vaihda alla olevat viivat

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

Kanssa

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

Toivon, että ymmärrät kuinka ladata ja muuttaa useita kuvia Laravelissa. Jaa ajatuksesi ja ehdotuksesi alla olevassa kommenttiosassa.

Aiheeseen liittyvät artikkelit

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja