{"id":25025,"date":"2021-05-25T11:27:00","date_gmt":"2021-05-25T08:27:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25025"},"modified":"2021-10-18T03:10:33","modified_gmt":"2021-10-18T00:10:33","slug":"crea-miniature-in-laravel-usando-la-libreria-di-immagini-di-intervento","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/it\/crea-miniature-in-laravel-usando-la-libreria-di-immagini-di-intervento\/","title":{"rendered":"Crea miniature in Laravel usando la libreria di immagini di intervento"},"content":{"rendered":"<p>Sul sito ci occupiamo sempre delle immagini. In base al requisito utilizziamo diverse versioni di immagini. \u00c8 una buona pratica per gli sviluppatori creare versioni diverse, note anche come miniature della singola immagine. Queste miniature possono essere utilizzate durante la visualizzazione di immagini di dimensioni diverse a seconda delle dimensioni del contenitore. Mostrare un&#8217;immagine che si adatta alle dimensioni del contenitore far\u00e0 risparmiare larghezza di banda e migliorer\u00e0 il tempo di caricamento della pagina. Mostrare un&#8217;immagine di grandi dimensioni in un piccolo contenitore \u00e8 una cattiva pratica e compromette il tempo di caricamento della pagina. Di conseguenza, si consiglia di creare pi\u00f9 miniature di un&#8217;immagine e utilizzare la versione appropriata laddove necessario.<\/p>\n<p>In questo articolo, studiamo come creare una miniatura in Laravel utilizzando la libreria di immagini di intervento. <a href=\"http:\/\/image.intervention.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Intervention Image<\/a> \u00e8 gratuito ed \u00e8 una delle librerie popolari per la manipolazione delle immagini. In background, questa libreria utilizza la libreria GD e Imagick per la manipolazione delle immagini.<\/p>\n<p>Per questo tutorial, creer\u00f2 3 miniature: piccola, media, grande con dimensioni rispettivamente 150 93, 300*185, 550 340. Modifica queste dimensioni secondo le tue esigenze.<\/p>\n<h3>Iniziare<\/h3>\n<p>Per iniziare, devi prima installare la libreria Intervention Image in Laravel. Apri il terminale nella directory principale del tuo progetto ed esegui il comando seguente:<\/p>\n<pre><code>composer require intervention\/image<\/code><\/pre>\n<p>Dopo aver installato la libreria, apri il <code>config\/app.php<\/code>file e aggiungi le seguenti righe al suo interno.<\/p>\n<p>Aggiungi i fornitori di servizi per questo pacchetto <code>$providers<\/code>nell&#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, per memorizzare le immagini dobbiamo creare una directory. Vai al terminale ed esegui il comando come segue:<\/p>\n<pre><code>php artisan storage:link<\/code><\/pre>\n<p>Questo comando crea una directory di archiviazione (collegamento simbolico) nella cartella pubblica. In questa cartella, caricher\u00f2 l&#8217;immagine originale e le sue miniature.<\/p>\n<h3>Crea una miniatura in Laravel<\/h3>\n<p>Abbiamo impostato tutto con la configurazione di base e ora possiamo scrivere il codice effettivo. Creiamo un modulo nel tuo file di visualizzazione.<\/p>\n<pre><code>&lt;form action=\"{{ url('PASS_ACTION_URL') }}\" 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\"&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 controller, \u00e8 necessario aggiungere la facciata della libreria &quot;Image&quot; che abbiamo aggiunto nel <code>config\/app.php<\/code>file.<\/p>\n<pre><code>&lt;?php\n\u00a0\u00a0\nnamespace AppHttpControllers;\n\u00a0\u00a0\nuse IlluminateHttpRequest;\nuse Image;\n\u00a0\u00a0\nclass ImageController extends Controller\n{\n\u00a0\u00a0\n}<\/code><\/pre>\n<p>Aggiungendo la facciata, siamo in grado di chiamare le funzioni della libreria Intervention Image. Nel codice sottostante, caricher\u00f2 l&#8217;immagine in due posti. L&#8217;immagine originale va direttamente all&#8217;interno della <code>storage\/profile_images<\/code>cartella. Le miniature verranno archiviate nella <code>storage\/profile_images\/thumbnail<\/code>directory. 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\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\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\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\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\/\/small thumbnail name\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$smallthumbnail = $filename.'_small_'.time().'.'.$extension;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/medium thumbnail name\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$mediumthumbnail = $filename.'_medium_'.time().'.'.$extension;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/large thumbnail name\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$largethumbnail = $filename.'_large_'.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\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$request-&gt;file('profile_image')-&gt;storeAs('public\/profile_images\/thumbnail', $smallthumbnail);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$request-&gt;file('profile_image')-&gt;storeAs('public\/profile_images\/thumbnail', $mediumthumbnail);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$request-&gt;file('profile_image')-&gt;storeAs('public\/profile_images\/thumbnail', $largethumbnail);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/create small thumbnail\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$smallthumbnailpath = public_path('storage\/profile_images\/thumbnail\/'.$smallthumbnail);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;createThumbnail($smallthumbnailpath, 150, 93);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/create medium thumbnail\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$mediumthumbnailpath = public_path('storage\/profile_images\/thumbnail\/'.$mediumthumbnail);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;createThumbnail($mediumthumbnailpath, 300, 185);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/create large thumbnail\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$largethumbnailpath = public_path('storage\/profile_images\/thumbnail\/'.$largethumbnail);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;createThumbnail($largethumbnailpath, 550, 340);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return redirect('image')-&gt;with('success', \"Image uploaded successfully.\");\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Nel codice sopra, conservo l&#8217;immagine con 3 formati piccolo, medio e grande. Dopo averli memorizzati, chiamiamo il metodo <code>createThumbnail<\/code>e passiamo la larghezza e l&#8217;altezza richieste al metodo. Definiamo questa funzione di seguito. Questa funzione dovrebbe andare nello stesso controller.<\/p>\n<pre><code>\/**\n\u00a0* Create a thumbnail of specified size\n\u00a0*\n\u00a0* @param string $path path of thumbnail\n\u00a0* @param int $width\n\u00a0* @param int $height\n\u00a0*\/\npublic function createThumbnail($path, $width, $height)\n{\n\u00a0\u00a0\u00a0\u00a0$img = Image::make($path)-&gt;resize($width, $height, function ($constraint) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$constraint-&gt;aspectRatio();\n\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0$img-&gt;save($path);\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.<\/p>\n<p>Se stai cercando un ritaglio duro, sostituisci le righe sottostanti<\/p>\n<pre><code>$img = Image::make($path)-&gt;resize($width, $height, function ($constraint) {\n\u00a0\u00a0\u00a0\u00a0$constraint-&gt;aspectRatio();\n});\n$img-&gt;save($path);<\/code><\/pre>\n<p>Con<\/p>\n<pre><code>$img = Image::make($path)-&gt;resize($width, $height)-&gt;save($path);<\/code><\/pre>\n<p>Spero che tu capisca come creare una miniatura in Laravel usando la libreria di immagini di intervento. Mi piacerebbe sentire i tuoi pensieri nella sezione commenti qui sotto.<\/p>\n<h4>articoli Correlati<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/ridimensiona-l-immagine-in-laravel-usando-la-libreria-di-immagini-di-intervento\/\" title=\"Ridimensiona l&#039;immagine in Laravel usando la libreria di immagini di intervento\">Ridimensiona l&#8217;immagine in Laravel usando la libreria di immagini di intervento<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-caricare-e-comprimere-immagini-in-laravel\/\" title=\"Una guida per caricare e comprimere immagini in Laravel\">Una guida per caricare e comprimere immagini in Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/carica-e-ridimensiona-piu-immagini-in-laravel\/\" title=\"Carica e ridimensiona pi\u00f9 immagini in Laravel\">Carica e ridimensiona pi\u00f9 immagini in 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>Vuoi creare una miniatura in Laravel durante il caricamento dell&#8217;immagine? In questo articolo, studiamo come creare pi\u00f9 miniature utilizzando Intervention Image<\/p>\n","protected":false},"author":1,"featured_media":21673,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[500],"tags":[846],"class_list":["post-25025","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\/25025","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=25025"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/25025\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media\/21673"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media?parent=25025"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/categories?post=25025"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/tags?post=25025"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}