{"id":25197,"date":"2021-05-27T12:14:00","date_gmt":"2021-05-27T09:14:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25197"},"modified":"2021-10-18T03:10:04","modified_gmt":"2021-10-18T00:10:04","slug":"carica-e-ridimensiona-piu-immagini-in-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/it\/carica-e-ridimensiona-piu-immagini-in-laravel\/","title":{"rendered":"Carica e ridimensiona pi\u00f9 immagini in Laravel"},"content":{"rendered":"<p>Oltre a questo blog, sto gestendo un <a href=\"https:\/\/www.youtube.com\/channel\/UCosi8Kv8-EPLt5TBJLlsWJA\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">canale YouTube in<\/a> cui condivido i video tutorial. Recentemente uno degli abbonati al canale YouTube ha chiesto di ridimensionare pi\u00f9 immagini in Laravel. Vogliono ridimensionare pi\u00f9 immagini in una volta sola. In questo articolo, studiamo come caricare e ridimensionare pi\u00f9 immagini in Laravel.<\/p>\n<p><a href=\"https:\/\/image.intervention.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Intervention Image<\/a> \u00e8 una libreria open source che ci permette di manipolare le immagini. User\u00f2 questa libreria per ridimensionare le immagini.<\/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=\"Carica e ridimensiona pi\u00f9 immagini in Laravel\" ><\/a><\/p>\n<h3>Iniziare<\/h3>\n<p>Per raggiungere il nostro obiettivo \u00e8 necessario installare e configurare la libreria Intervention Image nel progetto Laravel. Apri il terminale nella directory principale del tuo progetto ed esegui il comando:<\/p>\n<pre><code>composer require intervention\/image<\/code><\/pre>\n<p>Una volta installata la libreria, apri il <code>config\/app.php<\/code>file e aggiungi i fornitori di servizi, facciata in esso. Aggiungere i fornitori di servizi per questo pacchetto <code>$providers<\/code>all&#8217;array.<\/p>\n<pre><code>InterventionImageImageServiceProvider::class,<\/code><\/pre>\n<p>Aggiungi la facciata <code>$aliases<\/code>all&#8217;array.<\/p>\n<pre><code>'Image' =&gt; InterventionImageFacadesImage::class,<\/code><\/pre>\n<p>Successivamente, abbiamo bisogno di una directory in cui archiviare i nostri file caricati. <a href=\"https:\/\/laravel.com\/docs\/master\/filesystem\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laravel Filesystem<\/a> fornisce un disco pubblico per archiviare i file. Il disco pubblico contiene file accessibili pubblicamente. Troverai i file caricati nella <code>storage\/app\/public<\/code>cartella. Per accedere a questi file sul Web, \u00e8 necessario creare un collegamento simbolico da <code>public\/storage<\/code>a <code>storage\/app\/public<\/code>.<\/p>\n<p>Crea un collegamento simbolico usando il comando:<\/p>\n<pre><code>php artisan storage:link<\/code><\/pre>\n<p>Questo comando creerebbe una cartella di archiviazione nella directory pubblica. Qui \u00e8 dove memorizziamo i nostri file.<\/p>\n<h3>Carica e ridimensiona le immagini in Laravel<\/h3>\n<p>Per caricare file su un server, \u00e8 necessario un modulo. Creiamo un modulo in cui \u00e8 possibile selezionare pi\u00f9 file da caricare su un server. Di seguito \u00e8 riportato un codice di esempio del modulo che verr\u00e0 inserito nel file di visualizzazione.<\/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>Nel modulo, ho preso un nome di input di file come &quot;profile_image[]&quot; che invia una serie di file al server. Inoltre, ho aggiunto un attributo &quot;multiplo&quot; che ci consente di selezionare pi\u00f9 file. Sostituisci il segnaposto ROUTE_URL con il tuo valore effettivo.<\/p>\n<p>Poich\u00e9 dobbiamo caricare e ridimensionare le immagini, nel controller aggiungi due facciate come segue.<\/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>Aggiungendo la facciata, \u00e8 possibile chiamare le funzioni di ridimensionamento della libreria di immagini di intervento. Nel codice seguente, caricher\u00f2 i file in due posti. Uno \u00e8 l&#8217;immagine originale. Il secondo si trova nella directory delle miniature. Per prima cosa carichiamo l&#8217;immagine originale nella cartella delle miniature e poi la ridimensioniamo.<\/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>Qui stiamo ridimensionando l&#8217;immagine in modo proporzionale. In questo modo, manteniamo le proporzioni e l&#8217;immagine non verr\u00e0 tagliata. Sto passando la larghezza come 400 e l&#8217;altezza come 150. Puoi modificare questi valori secondo le tue esigenze.<\/p>\n<p>Vai avanti e provalo. Otterrai la versione ridimensionata delle immagini caricate nella directory &#8216;storage\/profile_images\/thumbnail&#8217;.<\/p>\n<p>Se stai cercando un ritaglio duro, sostituisci le righe sottostanti<\/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>Con<\/p>\n<pre><code>$img = Image::make($thumbnailpath)-&gt;resize(100, 100)-&gt;save($thumbnailpath);<\/code><\/pre>\n<p>Spero che tu capisca come caricare e ridimensionare pi\u00f9 immagini in Laravel. Si prega di condividere i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.<\/p>\n<h4>articoli Correlati<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-caricare-file-su-s3-utilizzando-laravel-filesystem\/\" title=\"Come caricare file su S3 utilizzando Laravel Filesystem\">Come caricare file su S3 utilizzando Laravel Filesystem<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-eseguire-il-backup-dell-applicazione-laravel\/\" title=\"Come eseguire il backup dell&#039;applicazione Laravel\">Come eseguire il backup dell&#8217;applicazione Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-integrare-la-newsletter-di-mailchimp-nell-applicazione-laravel\/\" title=\"Come integrare la newsletter di MailChimp nell&#039;applicazione Laravel\">Come integrare la newsletter di MailChimp nell&#8217;applicazione Laravel<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Stai cercando come caricare e ridimensionare pi\u00f9 immagini in Laravel? In questo articolo, ti mostriamo come eseguire questa attivit\u00e0 utilizzando l&#8217;immagine di intervento<\/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":[500],"tags":[846],"class_list":["post-25197","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/25197","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/comments?post=25197"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/25197\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media\/21676"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media?parent=25197"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/categories?post=25197"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/tags?post=25197"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}