✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Redimensionar imagem no Laravel usando a biblioteca de imagens de intervenção

755

Recentemente, um de nossos leitores perguntou como redimensionar a imagem no Laravel. O redimensionamento de imagens é uma tarefa normal para desenvolvedores. Os desenvolvedores devem fazer isso corretamente. É uma boa prática redimensionar as imagens de acordo com o tamanho do contêiner. Isso ajuda você a melhorar a velocidade da página. Neste artigo, estudamos como redimensionar a imagem no Laravel usando a biblioteca Intervention Image.

A biblioteca de imagens de intervenção fornece uma maneira fácil de redimensionar as imagens. Esta biblioteca usa GD Library e Imagick para manipulação de imagens por baixo do capô.

Por que redimensionar imagens?

Veja o exemplo de uma galeria. Ao trabalhar em uma galeria, normalmente exibimos a pequena miniatura na lista. Quando alguém clica na miniatura, mostramos uma imagem original. Aqui, as miniaturas são a versão redimensionada da imagem original.

Digamos que o tamanho da imagem original seja 500 500 e o contêiner de miniaturas 200 200. Nesse caso, você deve redimensionar a imagem original de acordo com o tamanho do contêiner da miniatura. Usar uma imagem de tamanho grande em um contêiner pequeno é uma prática ruim. Isso afeta o desempenho do site.

Este é um exemplo de por que devemos redimensionar as imagens. Há muitos outros também. Dito isso, vamos dar uma olhada em como redimensionar a imagem no Laravel usando a biblioteca de Imagens de Intervenção.

Instalação

Para começar, você precisa instalar a biblioteca Intervention Image em seu projeto Laravel. Você deve ter o Composer instalado em seu sistema. Abra o terminal no diretório raiz do seu projeto e execute o comando abaixo:

composer require intervention/image

Depois de instalar a biblioteca, abra o config/app.phparquivo e adicione as seguintes linhas nele.

Adicione o provedor de serviços deste pacote ao $providersarray.

InterventionImageImageServiceProvider::class

Em seguida, adicione a fachada ao $aliasesarray.

'Image' => InterventionImageFacadesImage::class

Redimensionar imagem no Laravel

Para redimensionar a imagem, primeiro temos que escrever o código para fazer o upload de uma imagem. Portanto, primeiro crie um diretório onde armazenaremos as imagens. Vá até o terminal e execute o comando:

php artisan storage:link

Este comando cria um diretório de ‘armazenamento’ na pasta ‘pública’. Na pasta ‘armazenamento’, iremos armazenar uma versão completa e uma versão em miniatura das imagens.

Em seguida, crie um formulário em seu arquivo de visualização. Também estou adicionando código para a mensagem de sucesso no arquivo blade.

@if (session('success'))     <div class="alert alert-success">         {{ session('success') }}     </div> @endif <form action="{{ url('PASS_ACTION_URL') }}" method="post" enctype="multipart/form-data">     <div class="form-group">         <label for="exampleInputFile">File input</label>         <input type="file" name="profile_image" id="exampleInputFile">     </div>     {{ csrf_field() }}     <button type="submit" class="btn btn-default">Submit</button> </form>

Substitua o marcador ‘PASS_ACTION_URL’ por sua rota.

No controlador, é necessário adicionar a fachada ‘Imagem’ de uma biblioteca que adicionamos no config/app.phparquivo.

<?php   namespace AppHttpControllers;   use IlluminateHttpRequest; use Image;   class ImageController extends Controller {   }

Adicionando a fachada, podemos chamar funções da biblioteca Intervention Image. No código abaixo, irei fazer o upload da imagem em dois lugares. Uma é a imagem original na pasta ‘profile_images’. O segundo está no diretório ‘profile_images / thumbnail’. Vou primeiro fazer upload da imagem original na pasta de miniaturas e, em seguida, redimensioná-la.

public function store(Request $request) {     if($request->hasFile('profile_image')) {         //get filename with extension         $filenamewithextension = $request->file('profile_image')->getClientOriginalName();           //get filename without extension         $filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);           //get file extension         $extension = $request->file('profile_image')->getClientOriginalExtension();           //filename to store         $filenametostore = $filename.'_'.time().'.'.$extension;           //Upload File         $request->file('profile_image')->storeAs('public/profile_images', $filenametostore);         $request->file('profile_image')->storeAs('public/profile_images/thumbnail', $filenametostore);           //Resize image here         $thumbnailpath = public_path('storage/profile_images/thumbnail/'.$filenametostore);         $img = Image::make($thumbnailpath)->resize(400, 150, function($constraint) {             $constraint->aspectRatio();         });         $img->save($thumbnailpath);           return redirect('image')->with('success', "Image uploaded successfully."); //change the route as per your flow     } }

Aqui estou redimensionando a imagem proporcionalmente. Fazendo isso, você mantém a proporção da imagem e a imagem não é cortada. Passei a largura como 400 e a altura como 150. Você pode alterar esses valores de acordo com sua necessidade.

Se você está procurando um corte difícil, substitua as linhas abaixo

$img = Image::make($thumbnailpath)->resize(400, 150, function($constraint) {     $constraint->aspectRatio(); }); $img->save($thumbnailpath);

Com

$img = Image::make($thumbnailpath)->resize(100, 100)->save($thumbnailpath);

Depois disso, você obterá a miniatura com uma dimensão de 100 * 100.

Espero que você possa aprender como redimensionar a imagem no Laravel usando a biblioteca de Imagens de Intervenção. Por favor, compartilhe seus pensamentos e sugestões na seção de comentários abaixo.

Artigos relacionados

Fonte de gravação: artisansweb.net

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação