Categorized | PHP

Meresize gambar sesuai yang kita inginkan dengan PHP (Part 3)

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…

7 Comments For This Post

  1. Anton Says:

    Mau tanya donk..

    kalo kita mau ambil gambar dari mysql untuk kita tampilin dengan php bgmana ya?

    terima kasih atas pencerahannya.

    Salam,
    anton

  2. admin Says:

    @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..

  3. zainal Says:

    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?….

  4. ukung Says:

    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.

  5. ukung Says:

    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.

  6. hendipra Says:

    gmn caranya menyimpan nama gambarnya di database?
    soalnya saya buat form uploadnya jadi satu ma form data

  7. Nazfra Says:

    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,,,

Leave a Reply

  • Popular
  • Comments
  • Tags
  • Subscribe
Advertise Here

Category

Tag Cloud