Pengolahan Citra Digital PHP

Pengolahan Citra Digital Dengan PHP – Part 4

Terkait respon dari pengunjung yang akhir-akhir ini kembali membludak terkait postingan sebelumnya yaitu Source Code Olah Citra Digital dengan PHP Part 3, maka bersama dengan postinga Part 4 ini saya ingin kembali membagikan Source Code Full PHP untuk contoh Pengolahan Citra Digital dengan berbagai efek yang sama dengan Part 2, fitur-fitur yang ada di dalam Olah Citra Digital versi terbaru ini diantaranya adalah :

  1. Histogram Standar
  2. Histogram Ekualisasi
  3. Logical Operation
  4. Image Flip
  5. Cropping
  6. Noise Elimination
  7. Threshold
  8. Edge Detection
  9. Gaussian Blur
  10. Emboss Image
  11. Sharpen Image

olah_citra_digital_php

Apa Yang BARU?

  1. Support PHP Versi Terbaru
  2. Bug Fix
  3. Dilengkapi Contoh

Semua fitur diatas menggunakan pemrograman PHP, yang bisa kalian pelajari lebih lanjut dengan Download Source Code Pengolahan Citra Digital Terbaru ini (Tanpa Survey). Selamat mencoba dan silahkan dikembangkan. Jika ada yang ingin ditanyakan mengenai metode atau mekanisme kerjanya seperti apa, silahkan komentar dibawah ini.

download_source_code_pcd_php

Source Code Pengolahan Citra Digital PHP – Part 3

DOWNLOAD VERSI TERBARU TANPA SURVEY DISINI : PCD PHP PART 4


Hai-hai programmers :mrgreen:

Menindaklanjuti dari postingan 4 tahun lalu yakni “Contoh Program Pengolahan Citra Digital (Digital Image Processing) – Part 2“, yang ternyata hingga hari ini masih banyak peminat dari hasil karya saya tersebut.

Banyak sekali yang menanyakan password dari file RAR yang saya bagikan di postingan tersebut, namun masalah besarnya saya juga lupa passwordnya 😀

Nah, setelah ubek-ubek komputer, akhirnya source code aslinya ketemu, dan ini saya coba bagikan kembali Source Code PCD PHP-nya tanpa password. Langsung bisa di download, dipelajari dan dinikmati.

Dan lebih kerennya lagi, ada beberapa perubahan / update dari source code yang terbaru ini (makanya saya sebut dengan PART 3), berikut perubahannya :

  1. Support PHP versi terbaru (PHP 5)
  2. Bugs FIXED
  3. Source Code Documentation

Oke, tanpa panjang lebar silahkan saja DOWNLOAD Source Code Pengolahan Citra Digital menggunakan PHP ini.

Pattern Regex Untuk Deteksi Komentar dan Method / Function

Selamat sore semuanya, lama sudah tak jumpa disini :mrgreen:
Ya, kali ini aku mau share sekelumit pengetahuan baru yang aku dapat yaitu mengenai bagaimana kita bisa mengambil atau mendeteksi komentar (comments) dan function / method yang ada di dalam source code. Untuk regex yang digunakan deteksi komentar, bisa diaplikasikan untuk jenis komentar sebagai berikut ini :

/**
 *Komentar lebih dari satu baris
 */

// Komentar perbaris

/** Komentar perbaris lainnya */

/* Komentar */

Sedangkan regex untuk deteksi function / method, ini saya buat hany untuk deteksi source code Java, seperti berikut ini :

public void ContohFungsi(String a){ ... }
private String ContohLain(){ ... }
... dan sejenisnya

Oke berikut ini adalah pattern regex dari kedua kebutuhan tersebut diatas :

// Deteksi Komentar
(/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+/)|(//.*)// Deteksi Function / Method
\\w+ +\\w+ *\\([^\\)]*\\) *\\{

Semoga bisa bermanfaat bagi kalian, sampai ketemu lagi 🙂

Android Vibrate Source Code

Sample Source Code For Vibrate Android Phone

Vibrate atau vibrasi atau getaran merupakan satu media yang cukup interaktif untuk digunakan mengirim informasi ke pengguna smartphone Android atau mengirimkan notifikasi akan adanya suatu proses atau pembaharuan tertentu. Misalkan kalau ada SMS baru atau ada Pesan (Email, Chat) baru pastinya Smartphone Android kita akan memberikan notifikasi berupa suara dan getaran/vibrasi tertentu sehingga kita tahu bahwa ada hal yang perlu kita lihat.

Nah, disini aku mau berbagi mengenai bagaimana caranya membuat suatu aplikasi Android yang bisa memerintahkan smartphone kita untuk bergetar/vibrate. Pengetahuan ini aku dapat dari http://android.konreu.com/developer-how-to/vibration-examples-for-android-phone-development/ . Terima kasih bagi beliau 🙂

Disini aku hanya ingin share ulang dan meringkas dalam bahasa kita Indonesia agar lebih gampang lah… hehe :mrgreen:. Oke yang akan kita buat nantinya adalah :

  1. Memberikan getaran berdasarkan kurun waktu tertentu
  2. Getaran/vibrate dengan irama tertentu
  3. Getaran tidak berhenti selama belum ada tindak lanjut dari pengguna

POIN utama sebelum memulai ini semua, beri hak akses pada Manifest agar mengijinkan untuk memberikan efek Vibrate, dengan sisipkan kode berikut pada bagian tengah Manifest Code :

<uses-permission android:name="android.permission.VIBRATE"/>

Poin 1, kita buat Vibrate dengan kurun waktu tertentu, silahkan sisipkan kode berikut di Activity yang terkait :

int lama_waktu = 1000; // 1 detik
((Vibrator) getSystemService(Context.VIBRATOR_SERVICE)).vibrate(lama_waktu);

Poin 2, kita buat Vibrate/Getaran dengan irama/pattern tertentu, misalkan seperti ini “zzz-zzz-zzz z zzzzzzz-zzzzzz” atau semacamnya. Intinya kita hanya memainkan waktu getaran dengan diberi waktu jeda agar menghasilkan irama tertentu. Bisa dimulai dengan code seperti berikut, silahkan dikreasikan sendiri 😀

Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

// Contoh vibrate ini seperti tanda "SOS" di Sandi Morse
// Iramanya adalah, "S" = "dot-dot-dot", "O" = "dash-dash-dash"
int dot = 200;
int dash = 500;
int short_gap = 200;	// jeda waktu untuk irama
int medium_gap = 500;	// jeda waktu antar huruf
int long_gap = 1000;	// jeda waktu antar kata
long[] pattern = {
	0,										// Start
	dot, short_gap, dot, short_gap, dot, 	// S
	medium_gap,
	dash, short_gap, dash, short_gap, dash, // O
	medium_gap,
	dot, short_gap, dot, short_gap, dot, 	// S
	long_gap
};

// bergetar hanya sekali, tidak berulang
v.vibrate(pattern, -1);

Efek terakhir, adalah bergetar secara terus menerus sampai ada satu proses untuk Cancel atau semacamnya :

Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

// Vibrate selama 200 milliseconds
// Jeda waktu selama 500 milliseconds
long[] pattern = { 0, 200, 500 };

// "0" menunjukkan akan diulang kembali irama mulai dari awal
v.vibrate(pattern, 0);

Code diatas tersebut digunakan agar bergetar secara terus menerus, untuk mengentikan proses tersebut, gunakan code berikut di bagian proses lain misalkan setelah suatu tombol di klik atau lainnya :

v.cancel();

Oke, sekian share ulang nya… semoga bisa bermanfaat :). Thanks to http://android.konreu.com/

Select & Block Text Website

jQuery Prevent Blocking Text

Hai hai…. 😀 Selamat Pagi

Hmmmm,,, kali ini saya coba berbagi pengalaman mengenai salah satu kemampuan JavaScript menggunakan framework jQuery. Jadi begini permasalahannya, apakah kalian pernah ingin meng-copy artikel di suatu halaman website? Pastinya pernah :mrgreen:
Biasanya kalo kalian selecting/milih text atau artikel mana yang ingin di copy, pasti kan harus di blok/selecting dulu mana saja. Nah, biasanya untuk melakukan selecting text pasti pake shift + click pada akhir point dimana itu merupakan kata terakhir yang ingin kalian copy kan? (Semoga kalian ngerti apa yang sebenernya pengen aku sampaikan :D)

Nah disini, adalah cara bagaimana agar user tidak bisa melakukan blocking/selecting text atau artikel pada suatu halaman website kita, ini berguna agar artikel kita tidak dicopy oleh user secara mudah 😀
Script ini juga bisa digunakan pada suatu area element html atau di salah satu area halaman website kita, jadi tidak harus ke seleuruh halaman diproteksi agar tidak bisa diblok text-nya. Oke, berikut ini adalah source codenya :

$(function(){
	var area_name = '.tablesorter tbody';
	$.extend($.fn.disableTextSelect = function() {
		return this.each(function(){
			if($.browser.mozilla){
				// untuk browser firefox
				$(this).css('MozUserSelect','none');
			}else if($.browser.msie){
				// untuk browser IE
				$(this).bind('selectstart',function(){return false;});
			}else{
				// selain kedua browser diatas
				$(this).mousedown(function(){return false;});
			}
		});
	});
	$(area_name).disableTextSelect();
});

Caching Website Page Content PHP – http_header

Saat membuat suatu website, tentunya kita ingin bahwa website kita bisa di-load/dibuka/diakses dengan tidak menunggu waktu lama. Nah, salah satu caranya adalah menggunakan cache. Dengan bantuan cache, loading page di website kita akan lebih cepat karena sebagian content berupa style external, gambar dan sebagainya disimpan pada temporary user. Jadi saat memanggil ulang web yang pernah kita akses akan terasa lebih cepat.

Salah satu caching dengan PHP bisa dengan memanfaatkan http_header yang di set agar browser menyimpan cache dalam kurun waktu tertentu guna mempercepat waktu membuka halaman website.

Oke, berikut contoh scriptnya :

<?php
ob_start();
$offset = 3600 * 24;
$expire = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";
$gmt_mtime = gmdate('D, d M Y H:i:s', time() ) . ' GMT';
header('Date: '.gmdate('D, d M Y H:i:s', time()).' GMT');
header($expire);
header("Cache-Control: max-age=3600, must-revalidate, public");
header("Last-Modified: " . $gmt_mtime );
header('Pragma: public');
/*
......
.. code lainnya ..
......
*/
ob_end_flush();
?>

Untuk penjelasan lebih lengkap mengenai http_header yang bisa digunaka sebagai caching di PHP, bisa baca disini http://www.mnot.net/cache_docs/

Program Enkripsi File Metode AES Dengan Delphi 7 – Part 2

Hai semua, selamat pagi … 🙂
Berdasarkan postingku yang sebelumnya di http://rendramm2.wordpress.com/2012/01/17/program-enkripsi-file-dengan-metode-aes-menggunakan-delphi-7-part-1/ dimana aku membahas mengenai suatu aplikasi yang dapat digunakan sebagai salah satu tool untuk melindungi file kalian dari proses copy tanpa sepengetahuan pemilik.
Disini aku tidak akan membahas mendalam mengenai aplikasi ini, karena waktuku juga terbatas (sok sibuk :p).
Di part/pembahasan sebelumnya aku udah janji untuk share source code untuk Contoh Aplikasi Enkripsi AES Delphi 7 kan, nah sekarang di Part 2 ini aku share link downloadnya : http://www.mediafire.com/?303cmjqxnb7n450

Alhamdulillah dengan ini akhirnya aku dapat Nilai A (95, Tertinggi di kelas)

Query Untuk Menghapus Data / Record Yang Sama (Duplikat) Di Dalam Suatu Tabel MySQL

Sesuai dengan judulnya, berikut adalah langkah – langkah yang bisa kalian pakai untuk menghapus data / record yang sama dalam suatu tabel di database MySQL hanya dengan satu Query saja. Pengetahuan ini akudapat dari http://www.justin-cook.com/wp/2006/12/12/remove-duplicate-entries-rows-a-mysql-database-table/

Berikut penjelasan singkatnya …

  1. Buka MySQL Manager, pilih database yang akan diolah, kemudian masukkan query berikut, misal ini aku mau menghapus dari tabel yang bernama “pelanggan”
    CREATE TABLE tabelBaru AS SELECT * FROM pelanggan WHERE 1 GROUP BY email;
    

    “email” itu adalah field yang digunakan sebagai acuan kita untuk membedakan data yang tidak sama

  2. Setelah itu hapus tabel pelanggan, bisa dengan klik kanan – hapus tabel, atau bisa juga dengan sintaks “DROP TABLE pelanggan”
  3. Kemudian rename table “tabelBaru” dengan nama table “pelanggan”
  4. Selesai, coba cek dah sekarang record tabelnya 😀
Semoga bermanfaat …

Contoh Program Java Swing Praktikum PBO

Sekedar share aja siapa tau ada yang butuh buat referensi

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

class MyCanvas extends JComponent {
    public void paint(Graphics g) {
        g.setColor(Color.yellow);
        g.fillRect(((300-100)/2),((300-100)/2),75,75);
    }
}

public class RectButton {
    public static void main(String[] a) {
        ActionListener actionListener = new ActionListener() {
            public void actionPerformed(ActionEvent actionEvent) {
                System.exit(0);
            }
        };

        JFrame window = new JFrame("Contoh");
        JButton exitBtn = new JButton("EXIT");
        window.getContentPane().add(exitBtn, BorderLayout.SOUTH);
        exitBtn.addActionListener(actionListener);
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setBounds(30, 30, 300, 300);
        window.getContentPane().add(new MyCanvas());
        window.setLocationRelativeTo(null);
        window.setVisible(true);
    }
}

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class temuTiga{
    private JTextField txtNim, txtNama, txtGender;
    private JFrame window;
    private JRadioButton satu, dua, tiga, empat;
    private JButton tampilkan, kosongkan, keluar;
    private JLabel lblNim, lblNama, lblGender;
    private ButtonGroup bgroup;
    private JPanel radioPanels, radioPanel;
    private String dataString [];
    private String stringData;

    public temuTiga(){
        dataString  = new String[3];
        window      = new JFrame("Contoh");
        satu        = new JRadioButton("Anggota Satu"  , true);
        dua         = new JRadioButton("Anggota Dua"   , false);
        tiga        = new JRadioButton("Anggota Tiga", false);
        empat       = new JRadioButton("Anggota Empat", false);
        tampilkan   = new JButton("Tampilkan");
        kosongkan   = new JButton("Kosongkan");
        keluar      = new JButton("Keluar");
        lblNim      = new JLabel("NIM");
        lblNama     = new JLabel("Nama");
        lblGender   = new JLabel("Jenis Kelamin");
        txtNim      = new JTextField(15);
        txtNama     = new JTextField(15);
        txtGender   = new JTextField(15);
        bgroup      = new ButtonGroup();
        radioPanel  = new JPanel();
        radioPanels = new JPanel();

        stringData  = "||";
        dataString[0] = "06.2007.1.04232";
        dataString[1] = "Fenny Su'aidah";
        dataString[2] = "Perempuan";

        satu.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                rdP(1);
            }
        });

        dua.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                rdP(2);
            }
        });

        tiga.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                rdP(3);
            }
        });

        empat.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                rdP(4);
            }
        });

        tampilkan.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                rdP(5);
            }
        });

        kosongkan.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                rdP(6);
            }
        });

        keluar.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                rdP(7);
            }
        });

        bgroup.add(satu);
        bgroup.add(dua);
        bgroup.add(tiga);
        bgroup.add(empat);

        radioPanel.setLayout(new GridLayout(2, 2));
        radioPanel.add(satu);
        radioPanel.add(dua);
        radioPanel.add(tiga);
        radioPanel.add(empat);

        radioPanels.setLayout(new GridLayout(5, 2, 4, 4));
        radioPanels.add(lblNim);
        radioPanels.add(txtNim);
        radioPanels.add(lblNama);
        radioPanels.add(txtNama);
        radioPanels.add(lblGender);
        radioPanels.add(txtGender);
        radioPanels.add(tampilkan);
        radioPanels.add(kosongkan);
        radioPanels.add(keluar);

        radioPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Anggota"));
        radioPanels.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Data"));

        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setBounds(30, 30, 605, 200);
        window.getContentPane().add(radioPanel, BorderLayout.WEST);
        window.getContentPane().add(radioPanels, BorderLayout.EAST);
        window.setLocationRelativeTo(null);
        window.setVisible(true);
    }

    private void rdP(int radioB){
        if(radioB==1){
            dataString[0] = "06.2007.1.04232";
            dataString[1] = "Fenny Su'aidah";
            dataString[2] = "Perempuan";
        }else if(radioB==2){
            dataString[0] = "06.2007.1.04900";
            dataString[1] = "Rendra Kurniawan";
            dataString[2] = "Laki - Laki";
        }else if(radioB==3){
            dataString[0] = "06.2007.1.04880";
            dataString[1] = "Kiki Fendi";
            dataString[2] = "Laki - Laki";
        }else if(radioB==4){
            dataString[0] = "06.2007.1.04901";
            dataString[1] = "Muadzin Rizal";
            dataString[2] = "Laki - Laki";
        }else if(radioB==5){
            txtNim.setText(dataString[0]);
            txtNama.setText(dataString[1]);
            txtGender.setText(dataString[2]);
        }else if(radioB==6){
            stringData  = "||";
            txtNim.setText("");
            txtNama.setText("");
            txtGender.setText("");
        }else{
            System.exit(0);
        }
    }

    public static void main(String[] a) {
        temuTiga m = new temuTiga();
    }
}

Contoh Program / Aplikasi C++ Dengan File CSV Sebagai Database – Struktur Data ( Single Linked List )

Satu lagi hasil dari ngerjakan tugas mata kuliah Struktur Data menggunakan bahasa pemrograman C++. Program ini adalah sebuah aplikasi yang dapat digunakan dalam membantu pengadaan Test Antropometri Bagi Calon TNI. Namun ini masih awalan, jadi maklum masih belum begitu akurat dan jujur masih belum bisa digunakan sebagai acuan dalam membantu Test tersebut. Tapi cukup lah kalo hanya sebagai tugas suatu mata kuliah, hehehe :mrgreen:
Di dalam aplikasi ini terdapat fitur untuk Backup data ke dalam Database dan juga Restore Database. Jadi bisa load data di database sehingga membantu kita untuk tidak terlalu banyak input data baru.
Aplikasi ini memakai Full Single Linked List tanpa Array, karena kebetulan tugas ini pas pembahasan Linked List. Oke, berikut untuk potongan source codenya : Continue reading