{"id":24914,"date":"2021-05-27T12:09:00","date_gmt":"2021-05-27T09:09:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24914"},"modified":"2021-10-17T20:38:12","modified_gmt":"2021-10-17T17:38:12","slug":"lataa-ja-muuta-useita-kuvia-laravelissa","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/lataa-ja-muuta-useita-kuvia-laravelissa\/","title":{"rendered":"Lataa ja muuta useita kuvia Laravelissa"},"content":{"rendered":"<p>T\u00e4m\u00e4n blogin lis\u00e4ksi k\u00e4yt\u00e4n <a href=\"https:\/\/www.youtube.com\/channel\/UCosi8Kv8-EPLt5TBJLlsWJA\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">YouTube-kanavaa,<\/a> jossa jaan video-oppaita. \u00c4skett\u00e4in yksi YouTube-kanavan tilaajista kysyi useiden kuvien koon muuttamisesta Laravelissa. He haluavat muuttaa useita kuvia yhdell\u00e4 kertaa. T\u00e4ss\u00e4 artikkelissa tutkitaan kuinka ladata useita kuvia Laravelissa ja muuttaa niiden kokoa.<\/p>\n<p><a href=\"https:\/\/image.intervention.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Interventiokuva<\/a> on avoimen l\u00e4hdekoodin kirjasto, jonka avulla voimme k\u00e4sitell\u00e4 kuvia. Aion k\u00e4ytt\u00e4\u00e4 t\u00e4t\u00e4 kirjastoa kuvien koon muuttamiseen.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20446-6081f2f1b1c63.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-20446-6081f2f1b1c63.png\" alt=\"Lataa ja muuta useita kuvia Laravelissa\" ><\/a><\/p>\n<h3>P\u00e4\u00e4st\u00e4 alkuun<\/h3>\n<p>Tavoitteen saavuttamiseksi sinun on asennettava ja m\u00e4\u00e4ritett\u00e4v\u00e4 Intervention Image -kirjasto Laravel-projektiin. Avaa p\u00e4\u00e4te projektin juurihakemistossa ja suorita komento:<\/p>\n<pre><code>composer require intervention\/image<\/code><\/pre>\n<p>Kun kirjasto on asennettu, avaa <code>config\/app.php<\/code>tiedosto ja lis\u00e4\u00e4 palveluntarjoajat, julkisivu siihen. Lis\u00e4\u00e4 t\u00e4m\u00e4n paketin palveluntarjoajat <code>$providers<\/code>ryhm\u00e4\u00e4n.<\/p>\n<pre><code>InterventionImageImageServiceProvider::class,<\/code><\/pre>\n<p>Lis\u00e4\u00e4 julkisivu <code>$aliases<\/code>taulukkoon.<\/p>\n<pre><code>'Image' =&gt; InterventionImageFacadesImage::class,<\/code><\/pre>\n<p>Seuraavaksi tarvitsemme hakemiston, johon tallennamme l\u00e4hetetyt tiedostot. <a href=\"https:\/\/laravel.com\/docs\/master\/filesystem\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laravel Filesystem<\/a> tarjoaa julkisen levyn tiedostojen tallentamiseen. Julkinen levy sis\u00e4lt\u00e4\u00e4 tiedostoja, jotka ovat julkisesti saatavilla. L\u00f6yd\u00e4t ladatut tiedostot <code>storage\/app\/public<\/code>kansiosta. Voit k\u00e4ytt\u00e4\u00e4 n\u00e4it\u00e4 tiedostoja verkossa, sinun t\u00e4ytyy luoda symbolinen linkki <code>public\/storage<\/code>on <code>storage\/app\/public<\/code>.<\/p>\n<p>Luo symbolinen linkki komennolla:<\/p>\n<pre><code>php artisan storage:link<\/code><\/pre>\n<p>T\u00e4m\u00e4 komento luo tallennuskansion julkiseen hakemistoon. T\u00e4\u00e4ll\u00e4 tallennamme tiedostomme.<\/p>\n<h3>Lataa ja muuta kuvia Laravelissa<\/h3>\n<p>Tarvitset lomakkeen, jotta voit ladata tiedostoja palvelimelle. Luodaan lomake, josta voit valita useita tiedostoja l\u00e4hetett\u00e4v\u00e4ksi palvelimelle. Alla on esimerkkikoodi lomakkeesta, joka menee n\u00e4kym\u00e4tiedostoon.<\/p>\n<pre><code>&lt;form action=\"{{ url('ROUTE HERE') }}\" method=\"post\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label for=\"exampleInputFile\"&gt;File input&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"file\" name=\"profile_image[]\" id=\"exampleInputFile\" multiple \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0{{ csrf_field() }}\n\u00a0\u00a0\u00a0\u00a0&lt;button type=\"submit\" class=\"btn btn-default\"&gt;Submit&lt;\/button&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>Lomakkeessa olen ottanut tiedoston sy\u00f6tt\u00f6nimen nimell\u00e4 &quot;profile_image []&quot;, joka l\u00e4hett\u00e4\u00e4 joukon tiedostoja palvelimelle. Lis\u00e4sin my\u00f6s attribuutin &#8217;useita&#8217;, jonka avulla voimme valita useita tiedostoja. Korvaa paikkamerkki ROUTE_URL todellisella arvollasi.<\/p>\n<p>Koska meid\u00e4n on ladattava ja muutettava kuvien kokoa, lis\u00e4\u00e4 ohjaimeen kaksi julkisivua seuraavasti.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllers;\n\u00a0\nuse IlluminateHttpRequest;\nuse Image; \/\/Intervention Image\nuse IlluminateSupportFacadesStorage; \/\/Laravel Filesystem\n\u00a0\nclass ImageController extends Controller\n{\n\u00a0\n}<\/code><\/pre>\n<p>Lis\u00e4\u00e4m\u00e4ll\u00e4 julkisivun voit soittaa Intervention Image -kirjaston koon muutostoiminnot. L\u00e4het\u00e4n alla olevaan koodiin tiedostot kahteen paikkaan. Yksi on alkuper\u00e4inen kuva. Toinen on pikkukuvien hakemiston alla. L\u00e4het\u00e4mme alkuper\u00e4isen kuvan ensin pikkukansioon ja muutamme sen kokoa.<\/p>\n<pre><code>public function store(Request $request)\n{\n\u00a0\u00a0\u00a0\u00a0if ($request-&gt;hasFile('profile_image')) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0foreach($request-&gt;file('profile_image') as $file){\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get filename with extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filenamewithextension = $file-&gt;getClientOriginalName();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get filename without extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get file extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$extension = $file-&gt;getClientOriginalExtension();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/filename to store\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filenametostore = $filename.'_'.uniqid().'.'.$extension;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Storage::put('public\/profile_images\/'. $filenametostore, fopen($file, 'r+'));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Storage::put('public\/profile_images\/thumbnail\/'. $filenametostore, fopen($file, 'r+'));\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/Resize image here\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$thumbnailpath = public_path('storage\/profile_images\/thumbnail\/'.$filenametostore);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img = Image::make($thumbnailpath)-&gt;resize(400, 150, function($constraint) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$constraint-&gt;aspectRatio();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img-&gt;save($thumbnailpath);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return redirect('ROUTE_URL')-&gt;with('success', \"Image uploaded successfully.\");\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>T\u00e4ss\u00e4 muutamme kuvan kokoa suhteellisesti. N\u00e4in pid\u00e4mme kuvasuhteen ennallaan, eik\u00e4 kuva leikkaa. Ohitan leveyden 400 ja korkeuden 150. Voit muuttaa n\u00e4it\u00e4 arvoja vaatimuksesi mukaan.<\/p>\n<p>Mene eteenp\u00e4in ja testaa se. Saat ladattujen kuvien koon version hakemistosta &#8217;storage \/ profile_images \/ thumbnail&#8217;.<\/p>\n<p>Jos etsit kovaa satoa, vaihda alla olevat viivat<\/p>\n<pre><code>$img = Image::make($thumbnailpath)-&gt;resize(400, 150, function($constraint) {\n\u00a0\u00a0\u00a0\u00a0$constraint-&gt;aspectRatio();\n});\n$img-&gt;save($thumbnailpath);<\/code><\/pre>\n<p>Kanssa<\/p>\n<pre><code>$img = Image::make($thumbnailpath)-&gt;resize(100, 100)-&gt;save($thumbnailpath);<\/code><\/pre>\n<p>Toivon, ett\u00e4 ymm\u00e4rr\u00e4t kuinka ladata ja muuttaa useita kuvia Laravelissa. Jaa ajatuksesi ja ehdotuksesi alla olevassa kommenttiosassa.<\/p>\n<h4>Aiheeseen liittyv\u00e4t artikkelit<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-ladata-tiedosto-s3-een-laravel-tiedostojarjestelman-avulla\/\" title=\"Kuinka ladata tiedosto S3: een Laravel-tiedostoj\u00e4rjestelm\u00e4n avulla\">Kuinka ladata tiedosto S3: een Laravel-tiedostoj\u00e4rjestelm\u00e4n avulla<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-ottaa-laravel-sovelluksen-varmuuskopiointi\/\" title=\"Kuinka ottaa Laravel-sovelluksen varmuuskopiointi\">Kuinka ottaa Laravel-sovelluksen varmuuskopiointi<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-integroida-mailchimp-uutiskirje-laravel-sovellukseen\/\" title=\"Kuinka integroida MailChimp-uutiskirje Laravel-sovellukseen\">Kuinka integroida MailChimp-uutiskirje Laravel-sovellukseen<\/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>Etsitk\u00f6 kuinka ladata ja muuttaa useita kuvia Laravelissa? T\u00e4ss\u00e4 artikkelissa n\u00e4yt\u00e4mme, kuinka t\u00e4m\u00e4 teht\u00e4v\u00e4 suoritetaan Intervention Image -toiminnon avulla<\/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":[499],"tags":[843],"class_list":["post-24914","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/24914","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/comments?post=24914"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/24914\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media\/21676"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media?parent=24914"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=24914"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=24914"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}