Buatkan Controller pada folder app/Http/Controllers/CompresImageController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Image;
class CompresImageController extends Controller
{
public function index()
{
$title = "Kompresi Gambar";
return view('compres', compact('title'));
}
public function store(Request $request)
{
// dd($request->all());
// Validasi input
$request->validate([
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
// Ambil file dari request
$image = $request->file('image');
// Pilih nama file
$fileName = time() . '.' . $image->getClientOriginalExtension();
// Proses gambar menggunakan Intervention/Image
$imageResized = Image::make($image)->resize(300, 300);
// Tentukan path penyimpanan
$path = public_path('images');
// Simpan gambar dengan storeAs
$imageResized->save($path . '/' . $fileName);
// Atau bisa juga menggunakan storeAs langsung di file upload
// $image->storeAs('images', $fileName, 'public');
return back()->with('success', 'Gambar berhasil diunggah dan diproses.');
}
}
Setelah itu buatkan view pada folder resources/view/compres.blade.php
<!DOCTYPE html>
<html>
<head>
<title>Upload Gambar</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<h2>Upload Gambar</h2>
@if ($message = Session::get('success'))
<div class="alert alert-success">
<strong>{{ $message }}</strong>
</div>
<img src="/images/{{ Session::get('image') }}" width="300" />
@endif
<form action="/tes/store" method="POST" enctype="multipart/form-data">
@csrf
<div class="form-group">
<label for="image">Pilih Gambar:</label>
<input type="file" class="form-control" name="image" id="image">
</div>
<button type="submit" class="btn btn-primary">Upload</button>
</form>
</div>
</body>
</html>