...
✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

Laraveli pildi suuruse muutmine, kasutades sekkumise pildikogu

23

Hiljuti küsis üks meie lugejatest, kuidas Laraveli pilti muuta. Kujutise suuruse muutmine on arendajatele tavaline ülesanne. Arendajad peaksid seda õigesti tegema. Hea tava on piltide suuruse muutmine vastavalt mahuti suurusele. See aitab teil parandada lehe kiirust. Selles artiklis uurime, kuidas muuta pildi suurust Laravelis, kasutades teeki Intervention Image.

Sekkumisega pilditeek pakub lihtsat viisi piltide suuruse muutmiseks. Selles raamatukogus kasutatakse kapoti all piltidega manipuleerimiseks GD Library ja Imagick.

Miks peaks piltide suurust muutma?

Võtke näide galeriist. Galeriis töötades kuvame loendis tavaliselt väikese pisipildi. Kui keegi klõpsab pisipildil, siis kuvame originaalpilti. Siin on pisipildid algse pildi suuruse muutmise versioon.

Oletame, et teie algne pildisuurus on 500 500 ja pisipiltide mahuti suurus 200 200. Sellisel juhul peaksite originaalpildi suuruse muutma pisipildi konteineri suuruse järgi. Suure pildi kasutamine väikeses konteineris on halb tava. See mõjutab veebisaidi toimivust.

See on üks näide, miks peaksime piltide suurust muutma. Neid on ka palju teisi. Seda öeldes vaatame, kuidas Laraveli pildi suurust Intervention Image teegi abil muuta.

Paigaldamine

Alustamiseks peate oma Laraveli projekti installima teose Intervention Image. Teie süsteem peaks olema installitud Composeri. Avage terminal oma projekti juurkataloogis ja käivitage järgmine käsk:

composer require intervention/image

Pärast teegi installimist avage config/app.phpfail ja lisage sinna järgmised read.

Lisage selle paketi teenusepakkuja $providersmassiivi.

InterventionImageImageServiceProvider::class

Järgmisena lisage $aliasesmassiivile fassaad .

'Image' => InterventionImageFacadesImage::class

Laraveli pildi suuruse muutmine

Pildi suuruse muutmiseks peame kõigepealt kirjutama pildi üleslaadimiseks koodi. Nii et kõigepealt looge kataloog, kuhu me pilte salvestame. Minge terminali ja käivitage käsk:

php artisan storage:link

See käsk loob kausta ‘public’ kataloogi ‘storage’. Kausta „storage" salvestame piltide täis- ja pisipildiversiooni.

Järgmisena looge oma vaadefailis vorm. Lisan terafaili ka edusõnumi koodi.

@if (session('success'))
    <div class="alert alert-success">
        {{ session('success') }}
    </div>
@endif
<form action="{{ url('PASS_ACTION_URL') }}" method="post" enctype="multipart/form-data">
    <div class="form-group">
        <label for="exampleInputFile">File input</label>
        <input type="file" name="profile_image" id="exampleInputFile">
    </div>
    {{ csrf_field() }}
    <button type="submit" class="btn btn-default">Submit</button>
</form>

Asendage kohatäide „PASS_ACTION_URL” oma marsruudiga.

Kontrolleris on vaja lisada teeki fassaad ‘Pilt’, mille oleme config/app.phpfaili lisanud .

<?php
 
namespace AppHttpControllers;
 
use IlluminateHttpRequest;
use Image;
 
class ImageController extends Controller
{
 
}

Fassaadi lisamisega saame helistada Intervention Image teegi funktsioonidele. Allolevas koodis laadin pildi üles kahte kohta. Üks on algne pilt kausta ‘profile_images’ all. Teine asub kataloogis ‘profile_images / thumbnail’. Laadin algse pildi kõigepealt üles pisipiltide kausta ja seejärel suurust.

public function store(Request $request)
{
    if($request->hasFile('profile_image')) {
        //get filename with extension
        $filenamewithextension = $request->file('profile_image')->getClientOriginalName();
 
        //get filename without extension
        $filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);
 
        //get file extension
        $extension = $request->file('profile_image')->getClientOriginalExtension();
 
        //filename to store
        $filenametostore = $filename.'_'.time().'.'.$extension;
 
        //Upload File
        $request->file('profile_image')->storeAs('public/profile_images', $filenametostore);
        $request->file('profile_image')->storeAs('public/profile_images/thumbnail', $filenametostore);
 
        //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('image')->with('success', "Image uploaded successfully."); //change the route as per your flow
    }
}

Siin ma muudan pildi suurust proportsionaalselt. Nii toimides säilitate kuvasuhte ja pilti ei lõigata. Olen läbinud laiuse 400 ja kõrguse 150. Neid väärtusi saate oma nõuete järgi muuta.

Kui otsite tugevat kärpimist, asendage read allpool

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

Koos

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

Pärast seda saate pisipildi mõõtmetega 100 * 100.

Loodan, et saate teada pildi suuruse muutmise kohta Laravelis, kasutades teeki Intervention Image. Palun jagage oma mõtteid ja ettepanekuid allpool olevas kommentaaride jaotises.

seotud artiklid

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem