{"id":25207,"date":"2021-05-25T14:11:00","date_gmt":"2021-05-25T11:11:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25207"},"modified":"2021-10-17T18:48:36","modified_gmt":"2021-10-17T15:48:36","slug":"kuidas-pilti-ules-laadida-ja-karpida-laravelis-kasutades-pilti-imgareaselect-ja-intervention","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/et\/kuidas-pilti-ules-laadida-ja-karpida-laravelis-kasutades-pilti-imgareaselect-ja-intervention\/","title":{"rendered":"Kuidas pilti \u00fcles laadida ja k\u00e4rpida Laravelis, kasutades pilti imgAreaSelect ja Intervention"},"content":{"rendered":"<p>Hiljuti palus \u00fcks meie lugejatest kirjutada Laraveli piltide \u00fcleslaadimise ja k\u00e4rpimise artikli. Varem avaldasin samal teemal artikli PHP <a href=\"https:\/\/themewp.inform.click\/et\/pildi-uleslaadimine-karpimine-ja-suuruse-muutmine-jquery-ja-php-abil\/\" title=\"\u00fcleslaadimiseks, k\u00e4rpimiseks ja pildi suuruse muutmiseks PHP-s\" >\u00fcleslaadimiseks, k\u00e4rpimiseks ja pildi suuruse muutmiseks PHP-s<\/a>. Kuid Laraveli osas peame tegema muudatusi vastavalt Laraveli standarditele. Selles artiklis uurime, kuidas pilte Laravelis \u00fcles laadida ja k\u00e4rpida.<\/p>\n<p>Selle \u00f5petuse jaoks kavatsen kasutada kahte teeki &#8211; imgAreaSelect ja Intervention Image.<\/p>\n<p><a href=\"https:\/\/plugins.jquery.com\/imgareaselect\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">imgAreaSelect<\/a> on jQuery pistikprogramm, mis v\u00f5imaldab pilte <a href=\"https:\/\/plugins.jquery.com\/imgareaselect\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">k\u00e4rpida<\/a>, valides pildi ristk\u00fclikukujulise ala. See on kerge pistikprogramm ja seda on lihtne kasutada.<\/p>\n<p>Teiselt poolt on <a href=\"http:\/\/image.intervention.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sekkumispilt<\/a> kujutiste k\u00e4itlemise ja manipuleerimise teek. See teek aitab meil serveri poolel pilte luua, redigeerida ja komponeerida.<\/p>\n<p>Selles \u00f5petuses kasutan k\u00e4rbitud pildi ja sekkumise pilditeegi koordinaatide hankimiseks rakendust imgAreaSelect, et pilti tegelikult serveri poolel k\u00e4rpida vastavalt koordinaatidele.<\/p>\n<h3>Alustamine<\/h3>\n<p>Alustamiseks oleksite pidanud installima Laraveli. Kui te pole veel loonud, installige see k\u00e4su kaudu:<\/p>\n<pre><code>composer create-project --prefer-dist laravel\/laravel laravel-dev<\/code><\/pre>\n<p>\u00dclaltoodud k\u00e4sk seab teie jaoks Laraveli projekti nimega &#8216;laravel-dev&#8217;.<\/p>\n<p>J\u00e4rgmisena installige oma Laraveli projekti Intervention pilditeek. K\u00e4ivitage projekti juurkataloogist allpool olev k\u00e4sk.<\/p>\n<pre><code>composer require intervention\/image<\/code><\/pre>\n<p>P\u00e4rast teegi installimist avage <code>config\/app.php<\/code>fail ja lisage sellele j\u00e4rgmised read.<\/p>\n<p>Lisage <code>$providers<\/code>massiivi selle paketi teenusepakkujad .<\/p>\n<pre><code>InterventionImageImageServiceProvider::class<\/code><\/pre>\n<p>Lisage <code>$aliases<\/code>massiivile fassaad .<\/p>\n<pre><code>'Image' =&gt; InterventionImageFacadesImage::class<\/code><\/pre>\n<p>L\u00f5puks laadige alla pistikprogramm <a href=\"https:\/\/plugins.jquery.com\/imgareaselect\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">imgAreaSelect<\/a>. Kopeerige allalaaditud ZIP-failist pildid, CSS- ja JS-fail ning kleepige Laraveli projekti avalikku kausta. P\u00f5him\u00f5tteliselt peaks teie struktuur olema nagu allpool olev ekraanipilt.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20475-6081f7850f82b.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20475-6081f7850f82b.png\" alt=\"Kuidas pilti \u00fcles laadida ja k\u00e4rpida Laravelis, kasutades pilti imgAreaSelect ja Intervention\" ><\/a><\/p>\n<h3>Kuidas kasutada imgAreaSelect<\/h3>\n<p>Kuna kavatseme kasutada pistikprogrammi imgAreaSelect CSS-i ja JS-i, ehitame selle \u00fclesehituse. Looge <code>resources\/views\/layouts\/app.blade.php<\/code>fail ja lisage sellesse allolev kood.<\/p>\n<pre><code>&lt;!DOCTYPE html&gt;\n&lt;html lang=\"{{ app()-&gt;getLocale() }}\"&gt;\n&lt;head&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;meta charset=\"utf-8\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"&gt;\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0&lt;!-- CSRF Token --&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;meta name=\"csrf-token\" content=\"{{ csrf_token() }}\"&gt;\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0&lt;title&gt;{{ config('app.name', 'Laravel') }}&lt;\/title&gt;\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0@yield('style')\n&lt;\/head&gt;\n&lt;body&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;div id=\"app\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0@yield('content')\n\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0@yield('footer')\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>See fail toimib k\u00f5igi terade \u00fchise failina. Kohahoidjate (<code>@yield<\/code>) abil saab koodi panna terafaili vastavatesse kohtadesse, n\u00e4iteks p\u00e4isesse, jalustesse jne.<\/p>\n<p>Looge kataloogis <code>image.blade.php<\/code>fail <code>resources\/views<\/code>. Sellel labafailil on j\u00e4rgmine kood.<\/p>\n<p><strong>image.blade.php<\/strong><\/p>\n<pre><code>@extends('layouts.app')\n\u00a0\u00a0\n@section('style')\n\u00a0\u00a0\u00a0\u00a0&lt;link rel=\"stylesheet\" href=\"{{ asset('css\/imgareaselect.css') }}\" \/&gt;\n@endsection\n\u00a0\u00a0\n@section('content')\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0@if(session('success'))\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"alert alert-success\"&gt;{{session('success')}}&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0@endif\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0&lt;div class=\"container mt-5\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;form action=\"{{ url('image') }}\" method=\"post\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label for=\"exampleInputImage\"&gt;Image:&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"file\" name=\"profile_image\" id=\"exampleInputImage\" class=\"image\" required&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"hidden\" name=\"x1\" value=\"\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"hidden\" name=\"y1\" value=\"\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"hidden\" name=\"w\" value=\"\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"hidden\" name=\"h\" value=\"\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{{ csrf_field() }}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;button type=\"submit\" class=\"btn btn-primary\"&gt;Submit&lt;\/button&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/form&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"row mt-5\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;img id=\"previewimage\" style=\"display:none;\"\/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0@if(session('path'))\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;img src=\"{{ session('path') }}\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0@endif\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n@endsection\n\u00a0\n@section('footer')\n\u00a0\u00a0\u00a0\u00a0&lt;script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery\/3.5.1\/jquery.min.js\"&gt;&lt;\/script&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;script src=\"{{ asset('js\/jquery.imgareaselect.min.js') }}\"&gt;&lt;\/script&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;script&gt;\n\u00a0\u00a0\u00a0\u00a0jQuery(function($) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var p = $(\"#previewimage\");\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$(\"body\").on(\"change\", \".image\", function(){\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var imageReader = new FileReader();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0imageReader.readAsDataURL(document.querySelector(\".image\").files[0]);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0imageReader.onload = function (oFREvent) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0p.attr('src', oFREvent.target.result).fadeIn();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0};\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('#previewimage').imgAreaSelect({\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0onSelectEnd: function (img, selection) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('input[name=\"x1\"]').val(selection.x1);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('input[name=\"y1\"]').val(selection.y1);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('input[name=\"w\"]').val(selection.width);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('input[name=\"h\"]').val(selection.height);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0&lt;\/script&gt;\n@endsection<\/code><\/pre>\n<p>Olete ehk m\u00e4rganud, m\u00f5ned asjad eespool faili nagu <code>@extends('layouts.app')<\/code>, <code>@section('style')<\/code>, <code>@section('content')<\/code>jne Need l\u00f5igud l\u00e4hevad vastavates kohtades <code>app.blade.php<\/code>. Kasutaja saab sellest parema ettekujutuse, kui vaatate selle lehe allikat brauseris.<\/p>\n<p>Selle vaate kutsumiseks looge kontroller k\u00e4suga:<\/p>\n<pre><code>php artisan make:controller ImageController --resource<\/code><\/pre>\n<p>Lisage selle kontrolleri viide marsruudi faili.<\/p>\n<p><strong>marsruudid \/ web.php<\/strong><\/p>\n<pre><code>Route::resource('image', 'ImageController');<\/code><\/pre>\n<p>Avage redaktoris &#8216;ImageController&#8217; ja meetodi &#8216;register&#8217; abil kutsuge vaatefail.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllers;\n\u00a0\nuse IlluminateHttpRequest;\nuse Image;\n\u00a0\nclass ImageController extends Controller\n{\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Display a listing of the resource.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return IlluminateHttpResponse\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function index()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return view('image');\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0.....\n}<\/code><\/pre>\n<p>K\u00e4ivitage <code>php artisan serve<\/code>k\u00e4sk ja n\u00e4ete oma vormi alloleval URL-il.<\/p>\n<pre><code>http:\/\/localhost:8000\/image<\/code><\/pre>\n<p>Pildi \u00fcleslaadimisel peaksite vormi all n\u00e4gema eelvaate pilti. Selles eelvaates saate valida osa pildist, mida soovite k\u00e4rpida.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20475-6081f7850f82b.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20475-6081f7850f82b.png\" alt=\"Kuidas pilti \u00fcles laadida ja k\u00e4rpida Laravelis, kasutades pilti imgAreaSelect ja Intervention\" ><\/a><\/p>\n<h3>Pildi \u00fcleslaadimine ja k\u00e4rpimine sekkumise pildikogu abil<\/h3>\n<p>Siinkohal oleme valmis kliendipoolse koodiga, kus kasutaja saab valida osa pildist, mida ta soovib k\u00e4rpida. J\u00e4rgmine t\u00f6\u00f6 on pildi k\u00e4rpimine ja serverisse salvestamine. Kujutise serverisse salvestamiseks kasutan Laraveli salvestusfunktsiooni, kus loome kausta &#8216;ladustamine&#8217; s\u00fcmboli. S\u00fcmbollingi loomiseks k\u00e4ivitage k\u00e4sk:<\/p>\n<pre><code>php artisan storage:link<\/code><\/pre>\n<p>See k\u00e4sk loob kausta &#8216;public&#8217; kataloogi &#8216;storage&#8217;.<\/p>\n<p>Meie kontrollerisse lisasime juba fassaadi, <code>use Image;<\/code>nii et teil on hea serveri poolel pildi l\u00f5ikamiseks kasutada sekkumise pilditeeki. Kontrolleri <code>store()<\/code>meetodil peaks olema j\u00e4rgmine kood:<\/p>\n<pre><code>\/**\n\u00a0* Store a newly created resource in storage.\n\u00a0*\n\u00a0* @param\u00a0 IlluminateHttpRequest\u00a0 $request\n\u00a0* @return IlluminateHttpResponse\n\u00a0*\/\npublic function store(Request $request)\n{\n\u00a0\u00a0\u00a0\u00a0if($request-&gt;hasFile('profile_image')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get filename with extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filenamewithextension = $request-&gt;file('profile_image')-&gt;getClientOriginalName();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get filename without extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get file extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$extension = $request-&gt;file('profile_image')-&gt;getClientOriginalExtension();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/filename to store\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filenametostore = $filename.'_'.time().'.'.$extension;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/Upload File\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$request-&gt;file('profile_image')-&gt;storeAs('public\/profile_images', $filenametostore);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(!file_exists(public_path('storage\/profile_images\/crop'))) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mkdir(public_path('storage\/profile_images\/crop'), 0755);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ crop image\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img = Image::make(public_path('storage\/profile_images\/'.$filenametostore));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$croppath = public_path('storage\/profile_images\/crop\/'.$filenametostore);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img-&gt;crop($request-&gt;input('w'), $request-&gt;input('h'), $request-&gt;input('x1'), $request-&gt;input('y1'));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img-&gt;save($croppath);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ you can save crop image path below in database\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$path = asset('storage\/profile_images\/crop\/'.$filenametostore);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return redirect('image')-&gt;with(['success' =&gt; \"Image cropped successfully.\", 'path' =&gt; $path]);\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Selles koodis salvestame pildi k\u00e4rbitud versiooni kataloogi &#8216;public \/ storage \/ profile_images \/ crop&#8217;. P\u00e4rast selle salvestamist l\u00e4bime k\u00e4rbitud pildi tee tagasi vaate juurde. Ja vaatefaili lisasime juba koodi, mis kuvab k\u00e4rbitud pildi l\u00f5ppkasutajale.<\/p>\n<h3>M\u00e4\u00e4ra pildil maksimaalne laius<\/h3>\n<p>M\u00f5nikord v\u00f5ivad kasutajad soovida m\u00e4\u00e4ratleda pildi k\u00e4rpeversioonile maksimaalne laius. Pistikprogramm imgAreaSelect pakub pildi l\u00f5pptulemuse kohandamiseks mitmeid v\u00f5imalusi, nagu aspektRatio, maxWidth, maxHeight jne. Kasutaja saab kasutada valikut maxWidth, muutes JavaScripti koodi j\u00e4rgmiselt:<\/p>\n<pre><code>$('#previewimage').imgAreaSelect({\n\u00a0\u00a0\u00a0\u00a0maxWidth: '1000', \/\/ this value is in pixels\n\u00a0\u00a0\u00a0\u00a0onSelectEnd: function (img, selection) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('input[name=\"x1\"]').val(selection.x1);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('input[name=\"y1\"]').val(selection.y1);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('input[name=\"w\"]').val(selection.width);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('input[name=\"h\"]').val(selection.height);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n\u00a0\u00a0\u00a0\u00a0}\n});<\/code><\/pre>\n<p>See k\u00f5ik k\u00e4ib Laraveli piltide \u00fcleslaadimise ja k\u00e4rpimise kohta. Loodan, et saite teada, kuidas piltide k\u00e4rpimisega hakkama saada. Tahaksin kuulda teie m\u00f5tteid ja ettepanekuid allpool olevas kommentaaride jaotises.<\/p>\n<h4>seotud artiklid<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/laraveli-pildi-suuruse-muutmine-kasutades-sekkumise-pildikogu\/\" title=\"Laraveli pildi suuruse muutmine, kasutades sekkumise pildikogu\">Laraveli pildi suuruse muutmine, kasutades sekkumise pildikogu<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/kuidas-pilte-laravelis-ules-laadida-ja-tihendada\/\" title=\"Juhend piltide \u00fcleslaadimiseks ja tihendamiseks Laravelis\">Juhend piltide \u00fcleslaadimiseks ja tihendamiseks Laravelis<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/looge-laravelis-pisipilt-kasutades-sekkumise-pildikogu\/\" title=\"Looge Laravelis pisipilt, kasutades sekkumise pildikogu\">Looge Laravelis pisipilt, kasutades sekkumise pildikogu<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Selles artiklis me n\u00e4itame teile, kuidas Laravelis pilti \u00fcles laadida ja k\u00e4rpida. Selleks kasutame pilditeeki imgAreaSelect ja Intervention.<\/p>\n","protected":false},"author":1,"featured_media":21676,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[498],"tags":[842],"class_list":["post-25207","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel2-5","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/25207","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/comments?post=25207"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/25207\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media\/21676"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media?parent=25207"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/categories?post=25207"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/tags?post=25207"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}