Gambar yang berukuran besar membutuhkan lebih banyak waktu untuk memuat halaman web. Jika kamu ingin memuat gambar berukuran besar tanpa memengaruhi page load time, gambar perlu dioptimalkan untuk memperkecil ukurannya. Kompresi gambar sangat membantu mengurangi ukuran file gambar. Jadi, pengguna tidak perlu repot-repot mengoptimalkan gambar sebelum menguploadnya.
Mengompres / mengoptimalkan gambar sebelum disimpan ke server dapat dengan mudah diimplementasikan menggunakan PHP. Dalam hal ini, kualitas dan ukuran file gambar akan dikurangi sebelum disimpan ke server. Gambar yang dikompresi membantu mengurangi penggunaan penyimpanan server dan memuat halaman web lebih cepat.
Form upload file
Buat form HTML dengan bidang input file dan tombol kirim. Pastikan tag <form>
berisi atribut berikut:
method="post"
enctype="multipart/form-data"
<form action="upload.php" method="post" enctype="multipart/form-data"> <label>Pilih file gambar:</label> <input type="file" name="image"> <input type="submit" name="submit" value="Upload"> </form>
Kompres dan upload gambar menggunakan PHP
Dalam file upload.php
inilah yang akan menangani kompresi gambar dan proses upload.
compressImage()
adalah fungsi custom yang membantu untuk mengompres dan menyimpan gambar di server menggunakan PHP.- Jika file disubmit
- Ambil info file menggunakan metode PHP $_FILES
- Kompres ukuran gambar dan upload gambar menggunakan fungsi
compressImage()
- Merender gambar dan menampilkan pesan status
<?php /* * fungsi untuk mengompres ukuran file gambar dan * mengupload ke server */ function compressImage($source, $destination, $quality) { // mendapatkan info gambar $imgInfo = getimagesize($source); $mime = $imgInfo['mime']; // membuat gambar baru dari file sumber switch($mime){ case 'image/jpeg': $image = imagecreatefromjpeg($source); break; case 'image/png': $image = imagecreatefrompng($source); break; case 'image/gif': $image = imagecreatefromgif($source); break; default: $image = imagecreatefromjpeg($source); } // menyimpan gambar imagejpeg($image, $destination, $quality); // mengembalikan gambar yang dikompres return $destination; } // path untuk file yang diupload $uploadPath = "uploads/"; // jika form upload disubmit $status = $statusMsg = ''; if(isset($_POST["submit"])){ $status = 'error'; if(!empty($_FILES["image"]["name"])) { // info file $fileName = basename($_FILES["image"]["name"]); $imageUploadPath = $uploadPath . $fileName; $fileType = pathinfo($imageUploadPath, PATHINFO_EXTENSION); // hanya membolehkan format file tertentu $allowTypes = array('jpg','png','jpeg'); if(in_array($fileType, $allowTypes)){ // sumber gambar sementara $imageTemp = $_FILES["image"]["tmp_name"]; // mengompres ukuran gambar 25% dan upload gambar $compressedImage = compressImage($imageTemp, $imageUploadPath, 75); if($compressedImage){ $status = 'Sukses'; $statusMsg = "Gambar berhasil dikompres."; }else{ $statusMsg = "Kompres gambar gagal!"; } }else{ $statusMsg = 'Maaf, hanya file JPG, JPEG, dan PNG yang dibolehkan untuk diupload.'; } }else{ $statusMsg = 'Silakan pilih file gambar untuk diupload.'; } } // menampilkan status echo $statusMsg; ?>
Kesimpulan
Secara umum, fungsi bawaan PHP move_uploaded_file()
digunakan untuk mengupload file pada PHP. Tetapi, jika kamu ingin mengompres gambar sebelum diupload, fungsi custom compressImage()
sangat berguna. Contoh kode diatas membantu kamu untuk mengompres file gambar tanpa menggunakan library tambahan.
Anjir kukira, bakal panjang