Mengelola gambar dengan baik sangat penting dalam pengembangan website, terutama untuk menjaga performa dan tampilan tetap optimal.
Pada tutorial ini, kamu akan belajar cara upload gambar, melakukan resize, serta membuat thumbnail menggunakan PHP dan AJAX.
Teknik ini sangat sering digunakan pada website seperti portal berita, blog, dan marketplace.
Alur Proses Upload Gambar
Sebelum masuk ke kode, berikut alur kerja sistem:
- User upload gambar melalui form atau AJAX
- File dikirim ke server
- PHP memproses gambar
- Gambar di-resize sesuai ukuran
- Thumbnail dibuat otomatis
- File disimpan ke server
Validasi dan Upload Gambar
Langkah pertama adalah menerima file upload dan melakukan validasi dasar:
if (isset($_FILES['gambar'])) {
$gambar = $_FILES['gambar'];
if ($gambar['error'] == 0) {
$format = pathinfo($gambar['name'], PATHINFO_EXTENSION);
if (in_array($format, ['jpg', 'jpeg', 'png'])) {
$nama_file = time() . '.' . $format;
move_uploaded_file($gambar['tmp_name'], 'uploads/' . $nama_file);
Penjelasan:
- Mengecek apakah file berhasil diupload
- Memastikan format file sesuai
- Membuat nama file unik
Membaca dan Memproses Gambar
Setelah file diupload, kita baca gambar menggunakan GD Library:
switch ($format) {
case 'jpg':
case 'jpeg':
$gambar = imagecreatefromjpeg('uploads/' . $nama_file);
break;
case 'png':
$gambar = imagecreatefrompng('uploads/' . $nama_file);
break;
}
Menentukan Ukuran Resize dan Thumbnail
$lebar = 500;
$tinggi = 500;
$lebar_thumbnail = 100;
$tinggi_thumbnail = 100;
$canvas = imagecreatetruecolor($lebar, $tinggi);
$canvas_thumbnail = imagecreatetruecolor($lebar_thumbnail, $tinggi_thumbnail);
Proses Resize dan Thumbnail
imagecopyresampled(
$canvas,
$gambar,
0,
0,
0,
0,
$lebar,
$tinggi,
imagesx($gambar),
imagesy($gambar)
);
imagecopyresampled(
$canvas_thumbnail,
$gambar,
0,
0,
0,
0,
$lebar_thumbnail,
$tinggi_thumbnail,
imagesx($gambar),
imagesy($gambar)
);
Penjelasan:
- imagecopyresampled digunakan untuk mengubah ukuran gambar
- canvas digunakan untuk hasil resize
- canvas_thumbnail untuk thumbnail
Menyimpan Gambar dan Thumbnail
switch ($format) {
case 'jpg':
case 'jpeg':
imagejpeg($canvas, 'uploads/resized_' . $nama_file);
imagejpeg($canvas_thumbnail, 'uploads/thumbnail_' . $nama_file);
break;
case 'png':
imagepng($canvas, 'uploads/resized_' . $nama_file);
imagepng($canvas_thumbnail, 'uploads/thumbnail_' . $nama_file);
break;
}
Membersihkan Resource
imagedestroy($gambar);
imagedestroy($canvas);
imagedestroy($canvas_thumbnail);
Catatan Penting
Agar sistem ini aman dan optimal, perhatikan hal berikut:
- Aktifkan GD Library di server
- Batasi ukuran file upload
- Validasi tipe file dengan ketat
- Gunakan nama file unik
- Gunakan prepared statement jika menyimpan ke database
Kesimpulan
Dengan menggunakan PHP dan GD Library, kamu bisa membuat sistem upload gambar yang lengkap dengan fitur resize dan thumbnail.
Teknik ini sangat penting untuk meningkatkan performa website karena ukuran gambar menjadi lebih ringan dan terstruktur.
Fitur ini sangat cocok digunakan untuk:
- Website berita
- Blog
- Gallery
- Marketplace
Jika kamu ingin mengembangkan lebih lanjut, kamu bisa menambahkan fitur seperti preview gambar, drag and drop upload, atau kompresi otomatis agar performa website semakin maksimal.