Mengelola Upload dan Resize Gambar dengan Laravel dan Intervention Image
Ngurus gambar di aplikasi web itu gampang-gampang susah. Mulai dari upload sampai resize biar sesuai kebutuhan, semuanya perlu ditangani dengan rapi. Untungnya, dengan Laravel dan paket Intervention Image, tugas ini jadi jauh lebih gampang.
1. Install Paket Intervention Image
Pertama, install paketnya via Composer:
composer require intervention/image
Setelah itu, langsung bisa dipakai di project Laravel kamu.
2. Upload dan Resize Gambar
Contoh fungsi untuk upload sekaligus resize:
use Image;
use Illuminate\Support\Facades\Storage;
public function uploadImage($image, $resize, $quality)
{
$filename = uniqid() . '.webp';
$fileImage = Image::make($image)->encode('webp', (int)$quality);
if ((int)$resize[0] && (int)$resize[1]) {
$imageResize = Image::make($image)->fit((int)$resize[0], (int)$resize[1])->encode('webp', (int)$quality);
} else {
$imageResize = Image::make($image)->resize(
(int)$resize[0] ?: null,
(int)$resize[1] ?: null,
function ($constraint) { $constraint->aspectRatio(); }
)->encode('webp', (int)$quality);
}
Storage::disk(env('DRIVER_FILE_SYSTEM'))->put(env('PATH_IMAGE') . $filename, $fileImage);
Storage::disk(env('DRIVER_FILE_SYSTEM'))->put(env('PATH_THUMBNAIL') . $filename, $imageResize);
return ['file_name' => $filename];
}
Gini deh logikanya:
- Nama File Unik: Pakai
uniqid()
supaya nggak tabrakan, format.webp
karena lebih efisien. - Resize: Kalau width dan height tersedia, pakai
fit()
. Kalau nggak lengkap, pakairesize()
sambil menjaga rasio. - Simpan File: Pakai
Storage::disk()
dengan path dari.env
.
3. Menghapus Gambar
Kalau perlu hapus gambar:
public function removeImage($file)
{
$checkImage = Storage::disk(env('DRIVER_FILE_SYSTEM'))->exists(env('PATH_IMAGE') . $file);
$checkThumbnail = Storage::disk(env('DRIVER_FILE_SYSTEM'))->exists(env('PATH_THUMBNAIL') . $file);
if ($checkImage) Storage::disk(env('DRIVER_FILE_SYSTEM'))->delete(env('PATH_IMAGE') . $file);
if ($checkThumbnail) Storage::disk(env('DRIVER_FILE_SYSTEM'))->delete(env('PATH_THUMBNAIL') . $file);
}
Fungsi ini bakal cek dulu apakah file ada, baru dihapus.
4. Contoh Pemakaian
$this->uploadImage($request->image, [600, 360], 75);
$this->uploadImage($request->image, [350, null], 75);
$this->uploadImage($request->file('image'), [350, null], 75);
Dengan begini, kamu bisa atur ukuran dan kualitas gambar sesuai kebutuhan aplikasi.
Kesimpulan
Ngurus gambar di web apps memang bisa ribet kalau nggak pakai tools yang tepat. Tapi dengan Laravel dan Intervention Image, upload, resize, dan hapus gambar jadi gampang dan efisien. Ini bikin workflow jadi jauh lebih enak, apalagi kalau aplikasi kamu butuh banyak manajemen gambar.