Sabtu, 29 Oktober 2016

Pengolahan Citra - Flip Gambar



coding :


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

public class bitmap extends Applet
{
            Image img;
            int lebar, tinggi;
            int warna, red, green, blue, alpha, abuabu, tempwarna;
            String tampil;
//diatas ini merupakan kumpulan variabel beserta tipe datanya.
           
            public void init()
//init : yang pertama kali dipanggil dalam html.
            {
                        img=this.getImage(this.getDocumentBase(), "kucing.jpg");
//getDocumentBase untuk mengambil jenis file apapun.
                        lebar = img.getWidth(this);
            }
           
            public void paint (Graphics g)
//paint : menampilkan applet (berkedip jika tampilannya diperbesar maupun diperkecil)
            {
                        //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);
                        g.drawString("tinggi: "+tampil,10,40);
                       
                        //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);
//deklarasi = bentuk pixel; 0,0->posisi awal;
                        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("Normal",lebar+100,40);
                        g.drawString("Flip Vertikal",lebar+100+lebar+50,40);
                        g.drawString("Flip Horisontal",lebar+100,185);
                        g.drawString("Flip Horisontal & Vertikal",       lebar+100+lebar+50, 185);
//posisi koordinat tulisannya
                       
                        g.setColor(Color.black);
                       
                        //bitmapnya
                        int [][] bitmapR = new int[lebar][tinggi];
                        int [][] bitmapG = new int[lebar][tinggi];
                        int [][] bitmapB = new int[lebar][tinggi];
//variabel bitmap : suatu penampungan sebuah warna. 1 sel bitmap mencerminkan 1 pixel.
                       
                        for(int j=0;j<tinggi;j++)
                        {
                                    for(int i=0;i<lebar;i++)
                                    {
                                                warna = pixels[j*lebar+i];
                                                red = (warna >> 16) & 0xff;
                                                bitmapR[i][j] = red;
                                               
                                                green = (warna >> 8) & 0xff;
                                                bitmapG[i][j] = green;
                                               
                                                blue = (warna) & 0xff;
                                                bitmapB[i][j] = blue;
                                    }
                        } //looping bitmapnya
                       
                        for(int j=0;j<tinggi;j++)
                        {
                                    for(int i=0;i<lebar;i++)
                                    {
                                                //tampilan normal
                                                g.setColor(new Color(bitmapR[i][j], bitmapG[i][j], bitmapB[i][j]));
                                                g.drawLine(i+lebar+100,j+50, i+lebar+100, j+50);
                                                //Flip Horisontal
                                                g.setColor(new Color(bitmapR[lebar-1-i][j], bitmapG[lebar-1-i][j], bitmapB[lebar-1-i][j]));
                                                g.drawLine(i+lebar+100,j+tinggi+40+50, i+lebar+100, j+tinggi+40+50);
                                                //Flip Vertikal
                                                g.setColor(new Color(bitmapR[i][lebar-1-j], bitmapG[i][lebar-1-j], bitmapB[i][lebar-1-j]));
                                                g.drawOval(i+lebar+100+lebar+50,        j+50, 1,1);
                                                //Flip Horisontal - Vertikal
                                                g.setColor(new Color(bitmapR[lebar-1-i][lebar-1-j], bitmapG[lebar-1-i][lebar-1-j], bitmapB[lebar-1-i][lebar-1-j]));
                                                g.drawOval(i+lebar+100+lebar+50, j+200, 1,1);
                                    }
                        } //looping untuk tampilan hasilnya
            }
           
            public void repaint (Graphics g)
            {
                        //kosongkan saja
            }
}

html :

<html>
<head>
            <title>Bitmap</title>
</head>
<body>
            <applet code=bitmap.class width=1000 height=800>
            </applet>
</body>
</html>

0 komentar:

Posting Komentar