Jumat, 02 September 2016

SEPI DUNIA

Tersudut sendiri
Menatap sekeliling
Semua tertawa dengan kelompoknya
Sibuk dengan dunianya sendiri
Aku hanya bisa mengamati
Ada celah diantara mereka
Yang terdiam dalam kicauan
Sesuatu telah merasuki
Entah apa itu

Aku melihat sekitar
Bertemankan kekasih yang setia
Dia merupakan jantungku
Hanya bisa saling menatap
Tanpa ekspresi yang terpancar
Hanya hati yang saling bicara

Apakah dunia ini terlalu kejam?
Jawabannya iya
Dunia ini memang kejam
Tapi yang kejam adalah isi dunia ini
Semua memikirkan kepentingan tertentu
Sesuai keinginan mereka

2 September 2016

Rabu, 17 Agustus 2016

Pengolahan Citra Digital - Pixel Grabber

Assalamualaikum sobat,
kembali lagi dengan saya yang ingin berbagi sedikit ilmu yang saya dapat. Tentang pengolahan citra digital topiknya pixel grabber. Menggunakan java console, alat bantunya cmd dan notepad++ yang saya pakai.

Buka cmd :
pindahkan ke drive D lalu ketik dimana folder yang berisi file *.java, gambar, *.html. Ikuti langkah seperti gambar dibawah ini. Untuk setting path disesuaikan keberadaan folder java, misal jdk nya berbeda seri nomornya.



Ketikkan javac sebelum mengkompile file *.java nya

Kompile file NgeGrabPixel.java, jika dienter seperti gambar dibawah ini file aman tidak adanya error.

Menampilkan appletnya ketik seperti gambar diatas appletviewer nama filenya lalu akan muncul hasilnya seperti ini :




Untuk codingnya diketik pada notepad++.
File NgeGrabPixel.java

 import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Image;
import java.awt.image.PixelGrabber;

public class NgeGrabPixel extends Applet
{
    Image img;
    int lebar, tinggi;
    int warna, red, green, blue, alpha, abuabu, tempwarna;
    String tampil;
   
    public void init()
    {
        img=this.getImage(this.getDocumentBase(), "kucing.jpg"); //disesuaikan dengan file gambar
        lebar = img.getWidth(this);
    }
   
    public void paint (Graphics g)
    {
        //beri warna pada panel
        g.setColor(Color.lightGray);
        g.fillRect(0,0,2800,800);
       
        //ambil lebar dan tinggi citra
        lebar = img.getWidth(this);
        tinggi = img.getHeight(this);
       
        //tampilkan informasi lebar dan tinggi citra
        g.setColor(Color.black);
        tampil = String.valueOf(lebar);
        g.drawString("lebar: "+tampil,10,20);
        tampil = String.valueOf(tinggi);
       
        //tampilkan citra dengan drawImage
        g.drawImage(img,10,50,this);
       
        //tentukan panjang array pixels
        int [] pixels = new int[lebar*tinggi];
       
        PixelGrabber pg = new PixelGrabber(img,0,0,lebar,tinggi, pixels,0,lebar);
        try
        {
            pg.grabPixels(); //grab piksel citra ke object pg.
        }
        catch (InterruptedException ie)
        {
            System.out.println("Terjadi kesalahan saat mengambil data pixels");
            ie.printStackTrace();
            return;
        }
        g.drawString("Hasil Pengolahan",lebar+100,20);
        g.drawString("pakai drawLine",lebar+100,40);
        g.drawString("pakai drawOval",lebar+100+lebar+50,40);
        g.drawString("pakai drawRect",lebar+100+lebar+50+lebar+50,40);
        g.drawString("abu-abu",       lebar+100+lebar+50+lebar+50+lebar+50, 40);
       
        g.setColor(Color.black);
        for(int j=0;j<tinggi;j++)
        {
            for(int i=0;i<lebar;i++)
            {
                warna = pixels[j*lebar+i];
                alpha = (warna >> 24) & 0xff;
                red = (warna >> 16) & 0xff;
                green = (warna >> 8) & 0xff;
                blue = (warna) & 0xff;
                g.setColor(new Color(red, green, blue));
                g.drawLine(i+lebar+100,                 j+50, i+lebar+100, j+50);
                g.drawOval(i+lebar+100+lebar+50,        j+50, 1,1);
                g.drawRect(i+lebar+100+lebar+50+lebar+50, j+50, 1,1);
                abuabu = (red+green+blue) / 3;
                g.setColor(new Color(abuabu, abuabu, abuabu));
                g.drawOval(i+lebar+100+lebar+50+lebar+50+lebar+50, j+50, 1,1);
            }
        }
    }
   
    public void repaint (Graphics g)
    {
        //kosongkan saja
    }
}




File panggil.html nya

<html>
<head>
    <title>Nge Grab Pixel</title>
</head>
<body>
    <applet code=NgeGrabPixel.class width=1000 height=800>
    </applet>
</body>
</html>



Selamat mencoba semoga bermanfaat.

Minggu, 14 Agustus 2016

SAKIT

laptop adalah jantungku
internet adalah darahku
flashdisk adalah lambungku
code adalah makananku
software adalah alat makanku

kini lambungku rusak
oleh virus shortcut
av tak sanggup menanganinya
cmd pun begitu
dokter manakah yang bisa menyembuhkan lambungku?

~Novia Mardiana~
14/08/2016

Sabtu, 14 Mei 2016

Tutorial Algoritma Lingkaran dan Ellipse pada Delphi 7

Assalamualaikum...


shape lingkaran dan sekitarnya diabaikan saja, karena belum ada codingannya :)

full code :


unit lingkaran;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    EditXC: TEdit;
    EditYC: TEdit;
    EditRX: TEdit;
    EditRY: TEdit;
    Button1: TButton;
    btn1way: TButton;
    btn2way: TButton;
    btn4way: TButton;
    btn8way: TButton;
    btnHapus: TButton;
    btnExit: TButton;
    Shape1: TShape;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    ScrollBox1: TScrollBox;
    Image1: TImage;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    CheckBox5: TCheckBox;
    CheckBox6: TCheckBox;
    CheckBox7: TCheckBox;
    CheckBox8: TCheckBox;
    btnAnimasi: TButton;
    procedure FormShow(Sender: TObject);
    procedure btnHapusClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure btnExitClick(Sender: TObject);
    procedure btn1wayClick(Sender: TObject);
    procedure btn2wayClick(Sender: TObject);
    procedure btn4wayClick(Sender: TObject);
    procedure btn8wayClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  rx, ry, xc, yc, c, x, y, sudut :  double;
  PosX1, PosY1, PosX2, PosY2, PosX3, PosY3, PosX4, PosY4, PosX5, PosY5, PosX6, PosY6, PosX7, PosY7, PosX8, PosY8 : double;

implementation
uses Math;
{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
begin
  Image1.Canvas.Pen.Color := clRed;
  Image1.Canvas.Pen.Style := psDash;
  Image1.Canvas.MoveTo(Image1.Width div 2, 0);
  Image1.Canvas.LineTo(Image1.Width div 2,Image1.Height);
  Image1.Canvas.MoveTo(0, Image1.Height div 2);
  Image1.Canvas.LineTo(Image1.Width,Image1.Height div 2);

  Image1.Canvas.MoveTo(0,0);
  Image1.Canvas.LineTo(Image1.Width,Image1.Height);
  Image1.Canvas.MoveTo(0,Image1.Height);
  Image1.Canvas.LineTo(Image1.Width,0);
end;

procedure TForm1.btnHapusClick(Sender: TObject);
begin
  //button hapus
  Image1.Canvas.Pen.Color := clWhite;
  Image1.Canvas.Brush.Color := clWhite;
  Image1.Canvas.Brush.Style := bsSolid;
  Image1.Canvas.Pen.Style := psSolid;
  Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height);
  FormShow(nil);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   sudut := 0;
   rx := StrToFloat(EditRX.Text);
   ry := StrToFloat(EditRY.Text);
   xc := StrToFloat(EditXC.Text);
   yc := StrToFloat(EditYC.Text);

   c := 1 / max(rx,ry);

   while (sudut < 2 * pi) do
     begin
      sudut := sudut + c;
      x := rx * cos(sudut);
      y := ry * sin(sudut);

      PosX1 := xc + x;
      PosY1 := yc + y;

      Image1.Canvas.Pixels[(Image1.Width div 2 + round(PosX1)),(Image1.Height div 2 - round(PosY1))] := clBlack;
    end;
end;

procedure TForm1.btnExitClick(Sender: TObject);
begin
  close;
end;

procedure TForm1.btn1wayClick(Sender: TObject);
begin
  sudut := 0;
   rx := StrToFloat(EditRX.Text);
   ry := StrToFloat(EditRY.Text);
   xc := StrToFloat(EditXC.Text);
   yc := StrToFloat(EditYC.Text);

   c := 1 / max(rx,ry);

   while (sudut < 2 * pi) do
     begin
      sudut := sudut + c;
      x := rx * cos(sudut);
      y := ry * sin(sudut);

      PosX1 := xc + x;
      PosY1 := yc + y;

      Image1.Canvas.Pixels[(Image1.Width div 2 + round(PosX1)),(Image1.Height div 2 - round(PosY1))] := clBlue;
      Image1.Repaint;
      sleep(10);
    end;
end;

procedure TForm1.btn2wayClick(Sender: TObject);
begin
  sudut := 0;
   rx := StrToFloat(EditRX.Text);
   ry := StrToFloat(EditRY.Text);
   xc := StrToFloat(EditXC.Text);
   yc := StrToFloat(EditYC.Text);

   c := 1 / max(rx,ry);

   while (sudut < pi) do
     begin
      sudut := sudut + c;
      x := rx * cos(sudut);
      y := ry * sin(sudut);

      PosX1 := xc + x;
      PosY1 := yc + y;

      PosX2 := xc - x;
      PosY2 := yc - y;

      Image1.Canvas.Pixels[(Image1.Width div 2 + round(PosX1)),(Image1.Height div 2 - round(PosY1))] := clGreen;
      Image1.Canvas.Pixels[(Image1.Width div 2 + round(PosX2)),(Image1.Height div 2 - round(PosY2))] := clGreen;
      Image1.Repaint;
      sleep(10);
    end;
end;

procedure TForm1.btn4wayClick(Sender: TObject);
begin
  sudut := 0;
   rx := StrToFloat(EditRX.Text);
   ry := StrToFloat(EditRY.Text);
   xc := StrToFloat(EditXC.Text);
   yc := StrToFloat(EditYC.Text);

   c := 1 / max(rx,ry);

   while (sudut < pi/2) do
     begin
      sudut := sudut + c;
      x := rx * cos(sudut);
      y := ry * sin(sudut);

      PosX1 := xc + x;
      PosY1 := yc + y;

      PosX2 := xc - x;
      PosY2 := yc + y;

      PosX3 := xc - x;
      PosY3 := yc - y;

      PosX4 := xc + x;
      PosY4 := yc - y;

      Image1.Canvas.Pixels[(Image1.Width div 2 + round(PosX1)),(Image1.Height div 2 - round(PosY1))] := clPurple;
      Image1.Canvas.Pixels[(Image1.Width div 2 + round(PosX2)),(Image1.Height div 2 - round(PosY2))] := clPurple;
      Image1.Canvas.Pixels[(Image1.Width div 2 + round(PosX3)),(Image1.Height div 2 - round(PosY3))] := clPurple;
      Image1.Canvas.Pixels[(Image1.Width div 2 + round(PosX4)),(Image1.Height div 2 - round(PosY4))] := clPurple;
      Image1.Repaint;
      sleep(10);
    end;
end;

procedure TForm1.btn8wayClick(Sender: TObject);
begin
  sudut := 0;
   rx := StrToFloat(EditRX.Text);
   ry := StrToFloat(EditRY.Text);
   xc := StrToFloat(EditXC.Text);
   yc := StrToFloat(EditYC.Text);

   c := 1 / max(rx,ry);

   while (sudut < pi/4) do
     begin
      sudut := sudut + c;
      x := rx * cos(sudut);
      y := ry * sin(sudut);

      PosX1 := xc + x;
      PosY1 := yc + y;

      PosX2 := xc + x;
      PosY2 := yc - y;

      PosX3 := xc - x;
      PosY3 := yc + y;

      PosX4 := xc - x;
      PosY4 := yc - y;

      PosX5 := xc + y;
      PosY5 := yc + x;

      PosX6 := xc + y;
      PosY6 := yc - x;

      PosX7 := xc - y;
      PosY7 := yc + x;

      PosX8 := xc - y;
      PosY8 := yc - x;

      Image1.Canvas.Pixels[(Image1.Width div 2 + round(PosX1)),(Image1.Height div 2 - round(PosY1))] := RGB(0,153,153);
      Image1.Canvas.Pixels[(Image1.Width div 2 + round(PosX2)),(Image1.Height div 2 - round(PosY2))] := RGB(0,153,153);
      Image1.Canvas.Pixels[(Image1.Width div 2 + round(PosX3)),(Image1.Height div 2 - round(PosY3))] := RGB(0,153,153);
      Image1.Canvas.Pixels[(Image1.Width div 2 + round(PosX4)),(Image1.Height div 2 - round(PosY4))] := RGB(0,153,153);
      Image1.Canvas.Pixels[(Image1.Width div 2 + round(PosX5)),(Image1.Height div 2 - round(PosY5))] := RGB(0,153,153);
      Image1.Canvas.Pixels[(Image1.Width div 2 + round(PosX6)),(Image1.Height div 2 - round(PosY6))] := RGB(0,153,153);
      Image1.Canvas.Pixels[(Image1.Width div 2 + round(PosX7)),(Image1.Height div 2 - round(PosY7))] := RGB(0,153,153);
      Image1.Canvas.Pixels[(Image1.Width div 2 + round(PosX8)),(Image1.Height div 2 - round(PosY8))] := RGB(0,153,153);
      Image1.Repaint;
      sleep(10);
     end;
end;

end.