Laraveli pildi suuruse muutmine, kasutades sekkumise pildikogu
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.php
fail ja lisage sinna järgmised read.
Lisage selle paketi teenusepakkuja $providers
massiivi.
InterventionImageImageServiceProvider::class
Järgmisena lisage $aliases
massiivile 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.php
faili 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.