document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. /**
  2.  * OFImage adalah kelas yang mendefinisikan gambar dalam format OF(Object First).
  3.  *
  4.  * @author Timotius Wirawan
  5.  * @version 06/12/2020
  6.  */
  7.  
  8. import java.awt.*;
  9. import java.awt.image.*;
  10. import javax.swing.*;
  11.  
  12. public class OFImage extends BufferedImage
  13. {
  14.     /**
  15.      * Membuat OFImage disalin dari BufferedImage.
  16.      *
  17.      * @param image gambar yang disalin
  18.      */
  19.     public OFImage(BufferedImage image)
  20.     {
  21.         super(image.getColorModel(), image.copyData(null),
  22.         image.isAlphaPremultiplied(), null);
  23.     }
  24.    
  25.    
  26.     /**
  27.      * Membuat OFImage dengan ukuran yang spesifik dan konten yang tidak spesifik.
  28.      *
  29.      * @param width lebar dari gambar
  30.      * @return height tinggi dari gambar
  31.      */
  32.     public OFImage(int width, int height)
  33.     {
  34.         super(width, height, TYPE_INT_RGB);
  35.     }
  36.    
  37.     /**
  38.      * atur piksel tertentu dari gambar ini ke warna tertentu. Warna direpresentasikan sebagai
  39.      * nilai (r, g, b).
  40.      *
  41.      * @param x posisi x pixel
  42.      * @param y posisi y pixel
  43.      * @param col warna pixel
  44.      */
  45.     public void setPixel(int x, int y, Color col)
  46.     {
  47.         int pixel = col.getRGB();
  48.         setRGB(x, y, pixel);
  49.     }
  50.    
  51.     /**
  52.      * Mendapatkan warna pada posisi pixel tertentu.
  53.      *
  54.      * @param x posisi x pixel
  55.      * @param y posisi y pixel
  56.      * @param col warna pixel
  57.      */
  58.     public Color getPixel(int x, int y)
  59.     {
  60.         int pixel = getRGB(x, y);
  61.        
  62.         return new Color(pixel);
  63.     }
  64.    
  65.     //Membuat gambar sedikit lebih gelap
  66.     public void darker()
  67.     {
  68.         int height = getHeight();
  69.         int width = getWidth();
  70.        
  71.         for (int y = 0; y < height; y++)
  72.         {
  73.             for (int x = 0; x < width; x++)
  74.             {
  75.                 setPixel(x, y, getPixel(x, y).darker());
  76.             }
  77.         }
  78.     }
  79.    
  80.     //Membuat gambar sedikit lebih terang
  81.     public void lighter()
  82.     {
  83.         int height = getHeight();
  84.         int width = getWidth();
  85.        
  86.         for (int y = 0; y < height; y++)
  87.         {
  88.             for (int x = 0; x < width; x++)
  89.             {
  90.                 setPixel(x, y, getPixel(x, y).brighter());
  91.             }
  92.         }
  93.     }
  94.    
  95.     //Lakukan operasi ambang tiga tingkat. Yaitu: mengecat ulang gambar dengan hanya tiga
  96.     //warna: putih, abu-abu, dan hitam.
  97.     public void threshold()
  98.     {
  99.         int height = getHeight();
  100.         int width = getWidth();
  101.        
  102.         for (int y = 0; y < height; y++)
  103.         {
  104.             for (int x = 0; x < width; x++)
  105.             {
  106.                 Color pixel = getPixel(x, y);
  107.                 int brightness = (pixel.getRed() + pixel.getBlue() + pixel.getGreen()) / 3;
  108.                
  109.                 if (brightness <= 85)
  110.                 {
  111.                     setPixel(x, y, Color.BLACK);
  112.                 }
  113.                
  114.                 else if (brightness <= 170)
  115.                 {
  116.                     setPixel(x, y, Color.GRAY);
  117.                 }
  118.                
  119.                 else
  120.                 {
  121.                     setPixel(x, y, Color.WHITE);
  122.                 }
  123.             }
  124.         }
  125.     }
  126. }
');