Apps Artificial Intelligence CSS DevOps Go JavaScript Laravel Linux MongoDB MySQL PHP Python Rust Vue

Mengelola Upload dan Resize Gambar dengan Laravel dan Intervention Image

1 min read .
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, pakai resize() 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.

chevron-up