Compressão de imagens durante o upload
Comprimir uma imagem durante o upload no Laravel pode ser feito usando várias bibliotecas. Uma das bibliotecas mais populares para manipulação de imagens é o Intervention Image
. Aqui está um guia sobre como comprimir uma imagem durante o upload usando o Laravel e o Intervention Image:
- Instale a biblioteca Intervention Image: Para começar, instale o pacote via Composer:
composer require intervention/image
- Configure o ServiceProvider:
Depois de instalar o pacote, registre o ServiceProvider do Intervention Image. Abra
config/app.php
e adicione o seguinte código no arrayproviders
:
Intervention\Image\ImageServiceProvider::class,
E adicione o seguinte código no array aliases
:
'Image' => Intervention\Image\Facades\Image::class,
- Manipule a imagem durante o upload: Agora, você pode usar a biblioteca Intervention Image para manipular e comprimir imagens durante o upload. Aqui está um exemplo de como você pode fazer isso em um controlador Laravel:
use Illuminate\Http\Request;
use Image; // Facade do Intervention Image
public function uploadImage(Request $request)
{
// Valide o upload da imagem
$request->validate([
'image' => 'required|image|mimes:jpeg,png,jpg,gif|max:20480', // 20MB
]);
// Faça o upload da imagem
$image = $request->file('image');
// Crie uma instância da imagem
$img = Image::make($image->getRealPath());
// Redimensione a imagem para 1023x1023
$img->resize(1023, 1023, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
});
// Defina a qualidade da imagem (quanto menor, mais comprimida)
$img->save(public_path('path/to/image.jpg'), 60); // 60% de qualidade
// Retorne uma resposta (por exemplo, redirecione de volta com uma mensagem de sucesso)
return back()->with('success', 'Imagem carregada com sucesso!');
}
- No front-end:
Certifique-se de que seu formulário tenha o atributo
enctype="multipart/form-data"
para permitir o upload de arquivos. Por exemplo:
<form action="/upload-image-route" method="post" enctype="multipart/form-data">
@csrf
<input type="file" name="image">
<button type="submit">Upload</button>
</form>
Com esses passos, você deve ser capaz de comprimir e redimensionar imagens durante o upload no Laravel usando a biblioteca Intervention Image. Ajuste conforme necessário para atender às suas necessidades específicas.