✅ 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

726

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