{"id":27709,"date":"2021-05-22T11:21:00","date_gmt":"2021-05-22T08:21:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27709"},"modified":"2021-10-18T04:10:25","modified_gmt":"2021-10-18T01:10:25","slug":"redimensionar-imagem-no-laravel-usando-a-biblioteca-de-imagens-de-intervencao","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/redimensionar-imagem-no-laravel-usando-a-biblioteca-de-imagens-de-intervencao\/","title":{"rendered":"Redimensionar imagem no Laravel usando a biblioteca de imagens de interven\u00e7\u00e3o"},"content":{"rendered":"<p>Recentemente, um de nossos leitores perguntou como redimensionar a imagem no Laravel. O redimensionamento de imagens \u00e9 uma tarefa normal para desenvolvedores. Os desenvolvedores devem fazer isso corretamente. \u00c9 uma boa pr\u00e1tica redimensionar as imagens de acordo com o tamanho do cont\u00eainer. Isso ajuda voc\u00ea a melhorar a velocidade da p\u00e1gina. Neste artigo, estudamos como redimensionar a imagem no Laravel usando a biblioteca Intervention Image.<\/p>\n<p><a href=\"http:\/\/image.intervention.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">A<\/a> biblioteca de <a href=\"http:\/\/image.intervention.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">imagens de interven\u00e7\u00e3o<\/a> fornece uma maneira f\u00e1cil de redimensionar as imagens. Esta biblioteca usa GD Library e Imagick para manipula\u00e7\u00e3o de imagens por baixo do cap\u00f4.<\/p>\n<h3>Por que redimensionar imagens?<\/h3>\n<p>Veja o exemplo de uma galeria. Ao trabalhar em uma galeria, normalmente exibimos a pequena miniatura na lista. Quando algu\u00e9m clica na miniatura, mostramos uma imagem original. Aqui, as miniaturas s\u00e3o a vers\u00e3o redimensionada da imagem original.<\/p>\n<p>Digamos que o tamanho da imagem original seja 500 500 e o cont\u00eainer de miniaturas 200 200. Nesse caso, voc\u00ea deve redimensionar a imagem original de acordo com o tamanho do cont\u00eainer da miniatura. Usar uma imagem de tamanho grande em um cont\u00eainer pequeno \u00e9 uma pr\u00e1tica ruim. Isso afeta o desempenho do site.<\/p>\n<p>Este \u00e9 um exemplo de por que devemos redimensionar as imagens. H\u00e1 muitos outros tamb\u00e9m. Dito isso, vamos dar uma olhada em como redimensionar a imagem no Laravel usando a biblioteca de Imagens de Interven\u00e7\u00e3o.<\/p>\n<h3>Instala\u00e7\u00e3o<\/h3>\n<p>Para come\u00e7ar, voc\u00ea precisa instalar a biblioteca Intervention Image em seu projeto Laravel. Voc\u00ea deve ter o <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> instalado em seu sistema. Abra o terminal no diret\u00f3rio raiz do seu projeto e execute o comando abaixo:<\/p>\n<pre><code>composer require intervention\/image<\/code><\/pre>\n<p>Depois de instalar a biblioteca, abra o <code>config\/app.php<\/code>arquivo e adicione as seguintes linhas nele.<\/p>\n<p>Adicione o provedor de servi\u00e7os deste pacote ao <code>$providers<\/code>array.<\/p>\n<pre><code>InterventionImageImageServiceProvider::class<\/code><\/pre>\n<p>Em seguida, adicione a fachada ao <code>$aliases<\/code>array.<\/p>\n<pre><code>'Image' =&gt; InterventionImageFacadesImage::class<\/code><\/pre>\n<h3>Redimensionar imagem no Laravel<\/h3>\n<p>Para redimensionar a imagem, primeiro temos que escrever o c\u00f3digo para fazer o upload de uma imagem. Portanto, primeiro crie um diret\u00f3rio onde armazenaremos as imagens. V\u00e1 at\u00e9 o terminal e execute o comando:<\/p>\n<pre><code>php artisan storage:link<\/code><\/pre>\n<p>Este comando cria um diret\u00f3rio de &#8216;armazenamento&#8217; na pasta &#8216;p\u00fablica&#8217;. Na pasta &#8216;armazenamento&#8217;, iremos armazenar uma vers\u00e3o completa e uma vers\u00e3o em miniatura das imagens.<\/p>\n<p>Em seguida, crie um formul\u00e1rio em seu arquivo de visualiza\u00e7\u00e3o. Tamb\u00e9m estou adicionando c\u00f3digo para a mensagem de sucesso no arquivo blade.<\/p>\n<pre><code>@if (session('success'))\n\u00a0\u00a0\u00a0\u00a0&lt;div class=\"alert alert-success\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{{ session('success') }}\n\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n@endif\n&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>Substitua o marcador &#8216;PASS_ACTION_URL&#8217; por sua rota.<\/p>\n<p>No controlador, \u00e9 necess\u00e1rio adicionar a fachada &#8216;Imagem&#8217; de uma biblioteca que adicionamos no <code>config\/app.php<\/code>arquivo.<\/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\n}<\/code><\/pre>\n<p>Adicionando a fachada, podemos chamar fun\u00e7\u00f5es da biblioteca Intervention Image. No c\u00f3digo abaixo, irei fazer o upload da imagem em dois lugares. Uma \u00e9 a imagem original na pasta &#8216;profile_images&#8217;. O segundo est\u00e1 no diret\u00f3rio &#8216;profile_images \/ thumbnail&#8217;. Vou primeiro fazer upload da imagem original na pasta de miniaturas e, em seguida, redimension\u00e1-la.<\/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\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\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$request-&gt;file('profile_image')-&gt;storeAs('public\/profile_images\/thumbnail', $filenametostore);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/Resize image here\n\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$img = Image::make($thumbnailpath)-&gt;resize(400, 150, function($constraint) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$constraint-&gt;aspectRatio();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img-&gt;save($thumbnailpath);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return redirect('image')-&gt;with('success', \"Image uploaded successfully.\"); \/\/change the route as per your flow\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Aqui estou redimensionando a imagem proporcionalmente. Fazendo isso, voc\u00ea mant\u00e9m a propor\u00e7\u00e3o da imagem e a imagem n\u00e3o \u00e9 cortada. Passei a largura como 400 e a altura como 150. Voc\u00ea pode alterar esses valores de acordo com sua necessidade.<\/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>Depois disso, voc\u00ea obter\u00e1 a miniatura com uma dimens\u00e3o de 100 * 100.<\/p>\n<p>Espero que voc\u00ea possa aprender como redimensionar a imagem no Laravel usando a biblioteca de Imagens de Interven\u00e7\u00e3o. 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\/otimizacao-de-imagens-usando-o-pacote-artisansweb-image-otimizer\/\" title=\"Otimiza\u00e7\u00e3o de imagens usando o pacote artisansweb \/ image-otimizer\">Otimiza\u00e7\u00e3o de imagens usando o pacote artisansweb \/ image-otimizer<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-fazer-upload-e-compactar-imagens-no-laravel\/\" title=\"Um guia para fazer upload e compactar imagens no Laravel\">Um guia para fazer upload e compactar imagens no Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/redimensionar-imagem-em-php-usando-tinypng\/\" title=\"Redimensionar imagem em PHP usando TinyPNG\">Redimensionar imagem em PHP usando TinyPNG<\/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 querendo redimensionar a imagem no Laravel? Neste artigo, estudamos como redimensionar imagens no Laravel usando a biblioteca Intervention Image. Redimensionar imagem<\/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-27709","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\/27709","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=27709"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27709\/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=27709"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=27709"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=27709"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}