Tulisan sebelumnya tentang upload gambar :
1. upload gambar dengan PHP
2. Sebelumnya Mendeteksi type dan ukuran dalam mengupload gambar PHP
Ini adalah kelanjutan upload gambar yang no 3, yaitu Meresize gambar sesuai yang kita inginkan dengan PHP, type dinamis sesuai kebutuhan, bisa JPG, JPEG, PNG, GIF, dll. Kita juga bisa tentukan sendiri ukuran gambar, resize dll
Disini judulnya resize gambar dengan PHP, biar lebih simple.
3. Meresize gambar sesuai yang kita inginkan
Disini kita akan membuat bagaimana ketentuan upload dijalankan, kita atur dalam baris konfigurasi paling atas :
- kita masukkan type gambar yang boleh diupload
- ukuran minimum gambar yang boleh diupload dlm byte
- ukuran maximum gambar yang boleh diupload dlm byte
- folder tujuan, folder dimana file hasil upload akan di letakkan
- folder thumbs, folder dimana file thumbs (hasil resize) akan di letakkan
- lebar gambar, ukuran lebar gambar hasil resize (tinggi akan menyesuaikan berdasarkan rasio)
- prefix, nama awal utk file yg di resize
Seperti biasa, step-stepnya pake a b c dst
a. buat file upload_tiga.php
<form enctype="multipart/form-data" action="upload_tiga_proses.php" method="POST">
Upload file gambar: <input name="foto" type="file" />
<input type="submit" value="Proses Upload" />
</form>
b. buat folder foto_user dan foto_user_thumbs (sesuai dengan konfigurasi di point c)
c. buat file upload_tiga_proses.php
< ?php
//konfigurasi file gambar
$typeGambar = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif');//type gambar yg di ijinkan
$ukuranMin = 1000; //ukuran minimum, dlm byte
$ukuranMax = 100000; //ukuran maximum, dlm byte
$folderTujuan = './foto_user/'; //folder dimana file akan di letakkan
$folderThumbs = './foto_user_thumbs/'; //folder dimana file thumbs akan di letakkan
$lebarGambar = 110;//ukuran lebar gambar hasil resize
$prefix = 'thumbs_';//nama awal utk file yg di resize
function resizeGambar($pathFileTujuan,$lebarGambar,$folderThumbs,$namaFileTujuan,$prefix){
$tipe = ereg_replace(".*\.(.*)$","\\1",$pathFileTujuan);
@header("Content-type: image/".$tipe);
list($lebar,$tinggi) = getimagesize($pathFileTujuan);
$lebar_baru = $lebarGambar;
$tinggi_baru= ($lebar_baru/$lebar) * $tinggi;
// proses copy resize
$gambar_baru = imagecreatetruecolor($lebar_baru, $tinggi_baru) or die('Problem In Creating image');
if($tipe=='jpg' || $tipe=='jpeg') {
$gambar_asli = imagecreatefromjpeg($pathFileTujuan) or die('Problem In opening Source JPEG Image');
} elseif($tipe=='gif') {
$gambar_asli = imagecreatefromgif($pathFileTujuan) or die('Problem In opening Source GIF Image');
} elseif($tipe=='png') {
$gambar_asli = imagecreatefrompng($pathFileTujuan) or die('Problem In opening Source PNG Image');
}
imagecopyresampled($gambar_baru, $gambar_asli, 0, 0, 0, 0, $lebar_baru, $tinggi_baru, $lebar, $tinggi) or die('Problem In resizing');
// Keluaran
if($tipe=='jpg' || $tipe=='jpeg') {
imagejpeg($gambar_baru, $folderThumbs.$prefix.$namaFileTujuan) or die('Problem In saving JPEG');
} elseif($tipe=='gif') {
imagegif($gambar_baru, $folderThumbs.$prefix.$namaFileTujuan) or die('Problem In saving GIF');
} elseif($tipe=='png') {
imagepng($gambar_baru, $folderThumbs.$prefix.$namaFileTujuan) or die('Problem In saving PNG');
}
//hapus resource gambar
imagedestroy($gambar_baru);
imagedestroy($gambar_asli);
}
function cekType($fileFoto,$typeGambar) {
$typeFile = strtolower($fileFoto[type]);
if(in_array($typeFile,$typeGambar)) {
return true;
} else {
return false;
}
}
function cekUkuran($fileFoto,$ukuranMin,$ukuranMax) {
if($fileFoto[size] > $ukuranMin AND $fileFoto[size] < $ukuranMax) {
return true;
} else {
return false;
}
}
function namaFileTujuan($fileFoto,$folderTujuan){
$fileTujuan = $folderTujuan.$fileFoto['name'];
$namaFile = $fileFoto['name'];
if(file_exists($fileTujuan)) { //jika nama file sudah ada, rename sesuai dengan urutan
$i=0;
while (file_exists($fileTujuan)) {
$fileTujuan = $folderTujuan.$i.'_'.$fileFoto['name'];
$namaFile = $i.'_'.$fileFoto['name'];
$i++;
}
}
return $namaFile;
}
function prosesUpload($fileFoto,$pathFileTujuan) {
if (@move_uploaded_file($fileFoto['tmp_name'], $pathFileTujuan)) {
echo 'Upload file di '.$pathFileTujuan.' Sukses<br>';//sukses
} else {
echo 'Upload gagal<br />';//upload gagal
}
}
$fileFoto = $_FILES[foto];//mengambil nilai file gambar
$cekType = cekType($fileFoto,$typeGambar);//cek type file
$cekUkuran= cekUkuran($fileFoto,$ukuranMin,$ukuranMax);//cek ukuran file
if($cekType) {
if($cekUkuran) {
$namaFileTujuan = namaFileTujuan($fileFoto,$folderTujuan);//cek file tujuan upload,
$pathFileTujuan = $folderTujuan.$namaFileTujuan;//membuat alamat file tujuan
$prosesUpload = prosesUpload($fileFoto,$pathFileTujuan);//proses upload
$prosesResized = resizeGambar($pathFileTujuan,$lebarGambar,$folderThumbs,$namaFileTujuan,$prefix); //proses resize
} else {
echo 'Ukuran gambar tidak diijinkan';
}
} else {
echo 'Type gambar tidak diijinkan';
}
echo '<br />';
echo 'Klik <a href="upload_tiga.php">disini</a> untuk kembali';
?>
Silahkan di coba, custom sendiri yach sesuai keinginan, thanks
Untuk upload banyak gambar, akan di tulis esok, wait ya…





















Oktober 16th, 2008 at 18:51
Mau tanya donk..
kalo kita mau ambil gambar dari mysql untuk kita tampilin dengan php bgmana ya?
terima kasih atas pencerahannya.
Salam,
anton
Oktober 16th, 2008 at 21:25
@anton
Kalo gambar di simpan di mysql dengan type longblob bisa langsung dipanggil dengan query biasa, saran saya yang disimpan di mysql hanya nama gambar saja, sedang gambar aslinya di simpan di folder.
Nah untuk memanggilnya, pakai query sekect biasa, nanti insyallah kalo ada waktu saya buatkan modul untuk mengadministrasi foto dengan php dan mysql..
Februari 19th, 2009 at 15:07
kalo mo merize gambar misal kalau gambar width nya lebih dari 500 pixel maka akan di resize ke 500 pixel tapi kalau lebih kecil dibiarkan saja, nggak diresize itu gimana caranya ya pak?….
Nopember 11th, 2009 at 02:59
Mantaf banget bos, oya sms sy ya di 081381715545
sy kadang mentok nanya sm siapa?
bos kalau script kaya gini misalnya
saat orang login eh dia salah masukin apa gitu
trus kita pulangin tuh orang
header(’location:login.html’);
nah saat dia kita pulangin ada pesen kesalahanya juga, gemanong bos buatnya?
ape ane bikin login.php satu2 sebanyak kesalahan dan ane lempar ke sono atau pesen kesalahanya ane simpen di url atau pake hidden. adalagi ga bos?
selain pake getElementById() atau form.bla.bla.bla
maksud saya php gitu bos biar server bae yang gawe.
makasih banyak ya.
Nopember 15th, 2009 at 04:25
Pa saya pakai php 4.3 kalo ga salah, saat say compile yang bagian 3 (merubah ukuran) ga bisa pak, gambar tetep saja tapi gagal saat proses –truecolornya, apa ga bs ya klo 4.3 kalau kita size pakai html gak sama ya pa misalnya apakah saat loading juga server meload file fhoto aslinya atau tidak?
thanks ya, scriptnya ok. tambah ya.
Nopember 26th, 2009 at 11:39
gmn caranya menyimpan nama gambarnya di database?
soalnya saya buat form uploadnya jadi satu ma form data
Mei 4th, 2010 at 20:51
Maaf,,, Numpang nanya yg para ahli , , ,
$folderTujuan = ‘./foto_user/’; //folder dimana file akan di letakkan
$folderThumbs = ‘./foto_user_thumbs/’; //folder dimana file thumbs akan di letakkan
diatas kan di bilang folder tujuan, , , Bisa ngak Klo Folder Tujuan yang kita Tuju ada DUA (2)
CONTOH
$folderTujuan = ‘./foto_user/’; //folder dimana file akan di letakkan
$folderThumbs = ‘./foto_user_thumbs/’; //folder dimana file thumbs akan di letakkan
$folderTujuan = ‘./foto_user1/’; //folder dimana file akan di letakkan
$folderThumbs = ‘./foto_user_thumbs1/’; //folder dimana file thumbs akan di letakkan
kan nambah 2 folder lg, , ,Bsa Ngak,,,,??? lebih gampangnya, , file yg kita upload sesuai katagori gambar yg kita inginkan per Folder,,,,,,,,,
Tolongya,,, Klo bisa kirim Ke Email Ku,,,