{"id":27908,"date":"2021-05-27T12:03:00","date_gmt":"2021-05-27T09:03:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27908"},"modified":"2021-10-18T04:09:00","modified_gmt":"2021-10-18T01:09:00","slug":"carregue-e-redimensione-varias-imagens-no-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/carregue-e-redimensione-varias-imagens-no-laravel\/","title":{"rendered":"Carregue e redimensione v\u00e1rias imagens no Laravel"},"content":{"rendered":"<p>Al\u00e9m deste blog, estou executando um <a href=\"https:\/\/www.youtube.com\/channel\/UCosi8Kv8-EPLt5TBJLlsWJA\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">canal no YouTube<\/a> onde compartilho os tutoriais em v\u00eddeo. Recentemente, um dos assinantes do canal do YouTube perguntou sobre o redimensionamento de v\u00e1rias imagens no Laravel. Eles querem redimensionar v\u00e1rias imagens de uma vez. Neste artigo, estudamos como fazer upload e redimensionar v\u00e1rias imagens no Laravel.<\/p>\n<p><a href=\"https:\/\/image.intervention.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Intervention Image<\/a> \u00e9 uma biblioteca de c\u00f3digo aberto que nos permite manipular imagens. Vou usar esta biblioteca para redimensionar imagens.<\/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=\"Carregue e redimensione v\u00e1rias imagens no Laravel\" ><\/a><\/p>\n<h3>Come\u00e7ando<\/h3>\n<p>Para atingir nosso objetivo, voc\u00ea precisa instalar e configurar a biblioteca de Imagens de Interven\u00e7\u00e3o no projeto Laravel. Abra o terminal no diret\u00f3rio raiz do seu projeto e execute o comando:<\/p>\n<pre><code>composer require intervention\/image<\/code><\/pre>\n<p>Assim que a biblioteca estiver instalada, abra o <code>config\/app.php<\/code>arquivo e adicione provedores de servi\u00e7o, fachada nele. Adicione os provedores de servi\u00e7o deste pacote ao <code>$providers<\/code>array.<\/p>\n<pre><code>InterventionImageImageServiceProvider::class,<\/code><\/pre>\n<p>Adicione a fachada ao <code>$aliases<\/code>array.<\/p>\n<pre><code>'Image' =&gt; InterventionImageFacadesImage::class,<\/code><\/pre>\n<p>Em seguida, precisamos de um diret\u00f3rio onde armazenamos nossos arquivos carregados. <a href=\"https:\/\/laravel.com\/docs\/master\/filesystem\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">O Laravel Filesystem<\/a> fornece um disco p\u00fablico para armazenar os arquivos. O disco p\u00fablico cont\u00e9m arquivos que podem ser acessados \u200b\u200bpublicamente. Voc\u00ea encontrar\u00e1 os arquivos carregados na <code>storage\/app\/public<\/code>pasta. Para acessar esses arquivos na web, voc\u00ea precisa criar um link simb\u00f3lico de <code>public\/storage<\/code>para <code>storage\/app\/public<\/code>.<\/p>\n<p>Crie um link simb\u00f3lico usando o comando:<\/p>\n<pre><code>php artisan storage:link<\/code><\/pre>\n<p>Este comando criaria uma pasta de armazenamento no diret\u00f3rio p\u00fablico. \u00c9 aqui que armazenamos nossos arquivos.<\/p>\n<h3>Carregar e redimensionar imagens no Laravel<\/h3>\n<p>Para fazer upload de arquivos em um servidor, voc\u00ea precisa de um formul\u00e1rio. Vamos criar um formul\u00e1rio onde voc\u00ea pode selecionar v\u00e1rios arquivos para carregar em um servidor. Abaixo est\u00e1 um exemplo de c\u00f3digo do formul\u00e1rio que ir\u00e1 dentro do seu arquivo de visualiza\u00e7\u00e3o.<\/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>No formul\u00e1rio, peguei um nome de entrada de arquivo como &#8216;profile_image []&#8217; que envia uma matriz de arquivos para o servidor. Al\u00e9m disso, adicionei um atributo &#8216;m\u00faltiplo&#8217; que nos permite selecionar v\u00e1rios arquivos. Substitua o marcador ROUTE_URL pelo seu valor real.<\/p>\n<p>Como precisamos fazer o upload e redimensionar as imagens, no controlador adicione duas fachadas da seguinte forma.<\/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>Ao adicionar a fachada, voc\u00ea pode chamar as fun\u00e7\u00f5es de redimensionamento da biblioteca de imagens de interven\u00e7\u00e3o. No c\u00f3digo abaixo, irei carregar os arquivos em dois lugares. Um \u00e9 a imagem original. O segundo est\u00e1 no diret\u00f3rio de miniaturas. Primeiro carregamos a imagem original na pasta de miniaturas e depois a redimensionamos.<\/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>Aqui estamos redimensionando a imagem proporcionalmente. Fazendo isso, mantemos a propor\u00e7\u00e3o da imagem e a imagem n\u00e3o \u00e9 cortada. Estou passando a largura como 400 e a altura como 150. Voc\u00ea pode alterar esses valores de acordo com sua necessidade.<\/p>\n<p>V\u00e1 em frente e teste. Voc\u00ea obter\u00e1 a vers\u00e3o de redimensionamento das imagens carregadas no diret\u00f3rio &#8216;storage \/ profile_images \/ thumbnail&#8217;.<\/p>\n<p>Se voc\u00ea est\u00e1 procurando um corte dif\u00edcil, substitua as linhas abaixo<\/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>Com<\/p>\n<pre><code>$img = Image::make($thumbnailpath)-&gt;resize(100, 100)-&gt;save($thumbnailpath);<\/code><\/pre>\n<p>Espero que voc\u00ea entenda como fazer o upload e redimensionar v\u00e1rias imagens no Laravel. Por favor, compartilhe seus pensamentos e sugest\u00f5es na se\u00e7\u00e3o de coment\u00e1rios abaixo.<\/p>\n<h4>Artigos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-fazer-upload-de-arquivo-para-s3-usando-o-sistema-de-arquivos-laravel\/\" title=\"Como fazer upload de arquivo para S3 usando o sistema de arquivos Laravel\">Como fazer upload de arquivo para S3 usando o sistema de arquivos Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-fazer-backup-do-aplicativo-laravel\/\" title=\"Como fazer backup do aplicativo Laravel\">Como fazer backup do aplicativo Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-integrar-o-boletim-informativo-mailchimp-no-aplicativo-laravel\/\" title=\"Como integrar o boletim informativo MailChimp no aplicativo Laravel\">Como integrar o boletim informativo MailChimp no aplicativo Laravel<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voc\u00ea est\u00e1 procurando como fazer o upload e redimensionar v\u00e1rias imagens no Laravel? Neste artigo, mostramos como realizar esta tarefa usando a Imagem de Interven\u00e7\u00e3o<\/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":[502],"tags":[848],"class_list":["post-27908","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27908","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/comments?post=27908"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27908\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media\/21676"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media?parent=27908"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=27908"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=27908"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}