Penanganan File dan Image dalam Web framework
Seringkali
aplikasi website yang sedang berjalan perlu membuat dan membaca file, entah
untuk penyimpanan data setting, log ataupun membuat file bagi keperluan
pengunjung. Untuk
keperluan ini, kita membuat suatu project file yang mampu membuat file teks,
membaca isinya, dan mendapatkan informasi darinya, yang meliputi ukuran, waktu
file, dan jenis file. Selain itu, mendaftar file-file yang ada di suatu folder
dan mengambil informasi darinya. Untuk
mengaktifkan layanan file dilakukan dengan cara me-load helper file menggunakan
framework CodeIgniter dengan dua metode :
–Melalui autoload.php
$autoload['helper'] = array('file');
–Secara manual
$this->load->helper('file');
Untuk lebih jelasnya bagaimana kode-kode Code Igniter
dalam hal penanganan file, mari kita buat project file berikut ini.
1. Pertama-tama kita buat project baru dengan nama
"Testing File".
2. Mula-mula di folder App Config ubah isi file
config.php dari :
$config['base_url']
= "http://example.com/*;,
Menjadi :
$config['base_url']
= "http://localhost/TestingFile/*;
3. Masih tetap di folder App Config, ubah isi file
routes.php dari:
$route['default_controller']
= "welcome";
Menjadi :
$route['default_controller']
= "file_con";
4. Di folder App Controller, buat file controller baru
dengan nama file_con, dan isinya keseluruhan adalah :
No Kode per
baris
1 <?php
2 Class
File_con extends Controller {
3 function
File_con(){
4 parent::Controller();
5 $this->load->helper('file');
6 }
7
8 function
index(){
9 $file*"d:\Test2.txt";
10 if(:file_exist($file)){
11 write_file($file,
"hello world", 'a+');
12 }
13 Else{
14 $content=read_file(file);
15 $info=get_file_info($file);
16 echo
"Nama file : ".$info['name']."<br>";
17 echo
"Isi File : ".$content."<br>";
18 echo
"server_path : ".$info['server_path'],"<br>";
19 echo
"size : ".$info['size']."<br>";
20 echo
" date : ".(date("d M Y",
$info['date']))."<br>";
21 echo
"Type File : ".get_mine_by_extension($info['name')."<br><br>";
22
23 echo
"<b>Daftar File di ".getcwd()."</b><br>";
24 $dafFile=get_dir_file_info(getcwd()};
25 foreach($dafFile
as $file>=Sisi){
26 echo
$isi('name')."<br>;
27 }
28 }
29 }
30
31 ?>
Adapun keterangannya sebagai berikut.
1. Pada baris ke-5, kita load terlebih dahulu helper
file supaya kita dapat menggunakan fasilitas file dari Codeigniter.
2. Pada baris ke -9, kita masukkan suatu alamat file
ke dalam variable $file.
3. Pada baris ke-10, dengan fungsi file_exist dari PHP
sendiri, kita cek ada tidaknya file "d:\Test2.txt";.
4. Jika tidak ada maka pada baris ke-11, dengan fungsi
dari helper file, yaitu write_file dibuatlah file tersebut dengan isi
"hello world".
5. Tanda a+ artinya append, membuat bila belum ada dan
menambahkan jika sudah ada. Tanda lainnya adalah:
-R, artinya
file yang dibuka hanya dapat dibaca, tidak dapat ditulisi dan akan menumbulkan
pesan error jika ada usaha untuk menulis ke dalamnya.
-w, artinya
file yang dibuka hanya dapat ditulis dan tidak bisa dibaca. Penulisan terhadap
file akan menghapus isi yang sebelumnya.
-r+,
artinya file yang dibuka dapat dibaca dan juga ditulisi. Penulisan terhadap
file akan ditambahkan pada bagian awal file.
-w+,
artinya apabila file sudah ada, isinya akan dihapus.
-a, artinya
membuka (membuat bila belum ada) dan menulis di awal file.
6. Jika ada maka yang dilakukan adalah baca isi file
tersebut dan masukkan ke dalam variable $content (baris ke-14). Dapatkan
informasi file dan masukkan ke variable $info yang bertipe array (baris ke-15).
7. Pada baris ke-16 dengan variable $info diperoleh
nama file menggunakan indeks 'name'.
8. Pada baris ke-17 ditampilkan isi file tersebut.
9. Pada baris ke-18 dengan variable $info diperoleh
alamat file server menggunakan indeks 'server_path'.
10. Pada baris ke-19 dengan variable $info diperoleh
ukuran file menggunakan indeks 'size'.
11. Pada baris ke-20 diperoleh tanggal file dari
$info, tetapi harus di-convert terlebih dahulu supaya berformat d-M-Y.
12. Pada baris ke-21 diperoleh type file dengan fungsi
get_mime_by_extension dari CodeIgniter.
13. Pada baris ke-24 di daftar semua file yang ada
dalam folder Testing File termasuk di sub-subfoldernya.
14. Karena hasil yang diperoleh dalam bentuk array
maka digunakan looping foreach (baris ke-25) dan dimasukkan ke variable $isi.
15. Selanjutnya pada baris ke-26 diambil data nama
file dari variable $isi. Jika kita ingin yang ditampilkan adalah ukuran bukan
nama file maka ganti name tersebut menjadi size. Bahkan ada dapat memperoleh
beserta alam servernya jika name tersebut diganti dengan server_path, sehingga
kode pada baris-26 tersebut: echo $isi['server_path']."<br>;.
Fungsi lain yang diperoleh dari CodeIgniter adalah
delete_files(alamat folder); yang berfungsi untuk menghapus semua file dalam
suatu folder. Jika kita tambahkan parameter kedua, yaitu TRUE maka semua file
di sub-subfoldernya akan dihapus pula, termasuk subfoldernya. Dan kodenya
menjadi:
delete_files('./path/to/directory/*,
TRUE);
b. Penanganan Image
Image
manipulation class merupakan class dalam CodeIgniter yang digunakan untuk
melakukan manipulasi image (gambar).
Pemanggilan class :
$this->load->library('image_lib');
Ruang lingkup manipulasi image yang dapat ditangani :
–Image Resizing(manipulasi ukuran image)
–Thumbnail Creation(pembuatan thumbnail image)
–Image Cropping(pemotongan suatu image)
–Image Rotating(pemutaran suatu image)
–Image Watermarking(pemberian watermark)
42 $config['source_image']
= $new_image;
43 $config['new_image']
= $base_path ."/"..'_rotate.jpg";
44 $config['rotation_angle']
= 'hor';
45
46 $this->image_lib->initialize($config);
47
48 $this->image_lib->rotate();
49
50 $new_image
= realpath($config[new_image']);
51 if($new_image){
52 $data['imgarr'][]
= array('name'->'<h3>Transformasi Kedua: Rotasi Horizontal Image
Pertama </h3>', $new_image, 'url'->
$base_url.'/'.basename($new_image));
53 }
54
55 unset($config);
56 $this->unage_lib->clear();
57
58 //Cropping
59
60 $config['create_thumb']
= FALSE;
61 $config['source_image']
= $new_image;
62 $config['new_image']
= $base_path.'/'.basename($config['source_image'],'.jpg').'_crop.jpg;
63 $config['x_axis']
= '100';
64 $config['y_axis']
= '50';
65
66 $this->image_lib->initialize($config);
67
68 $this->image_lib->crop();
69
70 $new_image
= real_path($config['$new_image']);
71 if($new_image){
72 $data['imgarr'][]
= array('name'->'<h3>Transformasi Ketiga: Crop Image
Kedua</h3>', $new_image, 'url'->$base_url./.basename($new_image));
73 }
74
75 unset($config);
76 $this->image_lib->clear();
77
78 //Watermarking
79
80 $config['create_thumb']
= FALSE;
81 $config['source_image']
= $new_image;
82 $config['new_image']
= $base_path ./.basename($config['source_image'],'.jpg')/'_watermark.jpg';
83 $config['wm_text']
= "Copy Left";
84 $config['wm_type']
= 'text';
85 $config['wm_font_size']
= '20';
86 $config['wm_font_color']
= 'ffffff';
87 $config['wm_vrt_alignment']
= 'B';
88 $config['wm_hor_alignment']
= 'C';
89 $config['wm_vrt_offset']
= '0';
90 $config['wm_hor_offset']
= '0';
91
92 $this->image_lib->initialize($config);
93
94 $this->image_lib->watermark();
95
96 $new_image
= realpath($config['new_image']);
97 if($new_image){
8) Pada baris ke-17 disimpan nilai tinggi (height)
dari file thumbnail gambar hasil manipulasi.
9) Pada baris ke-19 diset nilai variable $config untuk
indeks source_image yang nilainya adalah alamat file gambar.
10) Pada baris ke-21 dibuat thumbnail.
11) Pada baris ke-22 diset penanda nama file
thumbnail, yang isinya adalah _400x300_thumb.
12) Pada baris ke-23 dimasukkan nilai lebar ke dalam
variable array $config.
13) Pada baris ke-24 dimasukkan nilai lebar ke dalam
variable array $config.
14) Pada baris ke-26 di-load library 'image_lib yang
berguna untuk manipulasi gambar (image) dan dimasukkan nilai konfigurasinya
yang terkandung dalam variable array $config.
15) Pada baris ke-28 dilakukan pembuatan file baru
hasil manipulasi resize sesuai dengan data yang terkandung dalam variable aray
$config tadi.
16) Pada baris ke-30 masukkan alamat file gambar hasil
manipulasi tersebut (hasil resize) ke dalam variable $new_image.
17) Pada baris ke-32 dicek apakah hasil manipulasi
tersebut ada berdasarkan isi variable $new_image. Jika ada maka .....
////18) Pada baris ke-33 dimasukkan nilai string yang
berisi judul gambar dan alamat url file gambar baru tersebut ke dalama variable
array $data.
19) Pada baris ke-26, dihapus variable $config.
20) Pada baris ke-37, dikosongkan data konfigurasi
yang diberikan pada library image_lib.
21) Masuk pada prosedur merotasi gambar.
22) Pada baris ke-41 pembuatan thumbnail ditiadakan.
35) Pada baris ke-61 diset bajwa gambar yang akan
dimanipulasi adalah gambar hasil manipulasi sebelumnya.
36) Pada baris ke-62 diset alamat file hasil
manipulasi ini.
37) Pada baris ke-63 diset nilai lebar gambar hasil
cropping.
38) Pada baris ke-64 diset nilai tinggi gambar hasil
cropping.
39) Pada baris ke-66 dimasukkan data konfigurasi
tersebut ke library image_lib.
40) Pada baris ke-68 dilakukanlah proses cropping
tersebut.
41) Pada baris ke-70 dimasukkan alamat file hasil
cropping tersebut ke variable $new_image.
42) Pada baris ke-71 diperiksa apakah ada nilai yang
dimasukkan ke dalam variable $new_image tersebut. Jika ada berarti file gambar
manipulasi memang ada. Dan data tersebut dimasukkan ke variable array $data,
beserta alamat url-nya.
43) Pada baris ke-75 dihapus variable $config dari
memory.
44) Pada baris ke-76 dihapus data konfigurasi yang
telah diberikan ke variable image_lib.
45) Masuk pada manipulasi dengan watermarking (memberi
tanda pada gambar).
46) Pada baris ke-80 dibuat kembali variable array
$config dan diset bahwa tidak akan dibentuk thumbnail.
47) Pada baris ke-81 diset sumber gambar yang akan
dimanipulasi, yaitu gambar hasil manipulasi sebelumnya.
48) Pada baris ke-82 diset alamat file bari hasil
manipulasi dengan watermarking.
49) Pada baris ke-83 diset bahwa kalimat yang akan
menjadi watermark adalah "Copy Left".
50) Pada baris ke-84 diset jenis watermarking yang
diberikan adalah text bukan gambar.
51) Pada baris ke-85 diset ukuran huruf untuk
watermark adalah 20 point.
52) Pada baris ke-86 diset warna huruf adalah putih
(RGB:ffffff).
53) Pada baris ke-87 diset posisi watermark sevara
vertical adalah dibawah (B). Nilai lainnya adalah T untuk posisi atas dan M
untuk di tengah.
54) Pada baris ke-88 diset posisi watermark secara
horizontal adalah ditengah (C), nilai lainnya adlaah L untuk kiri dan R untuk
kanan.
55) Pada baris ke-89 dan 90 diset posisi peletakkan
teks watermark adalah 0, baik secara vertical maupun horizontal.
56) Pada baris ke-92 dimasukkan data konfigurasi
tersebut ke library image_lib.
57) Pada baris ke-94 dilakukanlah watermarking
berdasarkan data konfigurasi yang diberikan ke library image_lib.
58) Pada baris ke-96 dimasukkan data alamat gambar
hasil manipulasi ini ke variable $new_image.
59) Pada baris ke-97 dicek apakah berhasil ada nilai
pada variable $new_image tersebut. Jika ada maka dilakukan perintah selanjutnya
pada baris ke-98.
60) Pada baris ke-98 dimasukkan data file gambar
tersebut meliputi judul gambar dan alamat url gambar tersebut.
61) Pada baris ke-100 dipanggilllah view imgtest dan
data yang dikirimkan adalah data dari variable $data yang telah kita isi dengan
data-data judul gambar dan alamat url dari gambar-gambar hasil manipulasi dan
gambar aslinya.0000
No Kode Per Baris
1 <html><head>
2 <title>Testing
Image</title>
3 </head>
4 <body>
5 <h2>Hasil
Testing Manipulasi Image dengan CodeIgniter</h2>
6
7 <d1>
8 <?php
foreach($imgarr as $k => $v){ ?>
9 <dt><?php
echo $v['name']'?></dt>
10 <dd><img
src="<?php echo $v['url];?>" Title='<?php echo
$v['url'];?>"</dd>
11 <?php
}?>
12 </dl>
13 </body></html>
Keterangan kode di dalam file view ini cukup
sederhana, yaitu menampilkan data-data yang terkandung dalam variable $data
yang telah dikirimkan ke view ini dari controller image_con.
Dan hasilnya jika project ini dijalankan adalah
munculnya tampilan pada internet browser seperti gambar berikut ini.
0 Response to "Penanganan File dan Image dalam Web framework"
Post a Comment