Mengupload gambar ke database sekaligus melakukan resize adalah teknik yang sering digunakan dalam pengembangan aplikasi berbasis web.
Dengan cara ini, ukuran gambar bisa dikontrol sehingga lebih ringan dan tidak membebani server maupun database.
Pada tutorial ini, kamu akan belajar cara upload gambar menggunakan PHP, melakukan resize dengan GD Library, lalu menyimpannya ke database MySQL menggunakan mysqli.
Koneksi ke Database
Langkah pertama adalah membuat koneksi ke database MySQL:
$conn = mysqli_connect("host", "username", "password", "database_name");
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
Mengambil Data File Upload
$file_name = $_FILES['image']['name'];
$file_tmp = $_FILES['image']['tmp_name'];
$file_size = $_FILES['image']['size'];
$file_error = $_FILES['image']['error'];
Data ini digunakan untuk memproses file yang diupload oleh user.
Validasi Upload
if ($file_error === 0) {
Kode ini memastikan bahwa file berhasil diupload tanpa error.
Membaca dan Membuat Gambar Baru
$image = addslashes(file_get_contents($file_tmp));
$new_image = imagecreatefromstring($image);
Penjelasan:
- file_get_contents membaca file gambar
- imagecreatefromstring membuat resource gambar
Menentukan Ukuran Resize
$old_width = imagesx($new_image);
$old_height = imagesy($new_image);
$new_width = 500;
$new_height = 500;
Proses Resize Gambar
$resized_image = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled(
$resized_image,
$new_image,
0,
0,
0,
0,
$new_width,
$new_height,
$old_width,
$old_height
);
Fungsi imagecopyresampled digunakan untuk menghasilkan kualitas resize yang lebih baik.
Mengubah Gambar Menjadi Binary
ob_start();
imagejpeg($resized_image, null, 100);
$resized_image_binary = ob_get_contents();
ob_end_clean();
Penjelasan:
- ob_start digunakan untuk menangkap output gambar
- hasilnya disimpan dalam bentuk binary
Menyimpan ke Database
$sql = "INSERT INTO table_name (image)
VALUES ('$resized_image_binary')";
if (mysqli_query($conn, $sql)) {
echo "Image berhasil diupload";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
Menutup Koneksi
mysqli_close($conn);
Catatan Penting
Beberapa hal yang harus kamu perhatikan:
- Pastikan GD Library sudah aktif di server
- Gunakan prepared statement untuk keamanan
- Batasi ukuran file upload
- Validasi tipe file (jpg, png, dll)
- Pertimbangkan menyimpan path file, bukan binary, untuk performa lebih baik
Kelebihan dan Kekurangan
Kelebihan:
- Data tersimpan langsung di database
- Mudah dikelola dalam satu sistem
Kekurangan:
- Database bisa cepat membesar
- Lebih berat dibanding simpan file di folder
Kesimpulan
Upload dan resize gambar menggunakan PHP dan GD Library adalah teknik penting dalam pengembangan web.
Menyimpan gambar ke database bisa menjadi solusi praktis, namun perlu dipertimbangkan dari sisi performa.
Untuk skala besar, biasanya lebih disarankan menyimpan file di server dan hanya menyimpan path di database.
Dengan memahami teknik ini, kamu sudah selangkah lebih maju dalam membangun sistem manajemen gambar yang optimal.
Kalau kamu mau, kita bisa lanjut ke versi yang lebih optimal seperti kompresi gambar otomatis atau upload ke cloud storage.