Langsung ke konten utama

Tugas 8a PBO: ImageViewer 1.0

Class ImageViewer:

 import java.awt.*;  
 import java.awt.event.*;  
 import java.awt.image.*;  
 import javax.swing.*;  
 import java.io.File;  
 public class ImageViewer  
 {  
   private static final String VERSION = "Version 1.0";  
   private static JFileChooser fileChooser = new JFileChooser(System.getProperty("user.dir"));  
   private JFrame frame;  
   private ImagePanel imagePanel;  
   private JLabel filenameLabel;  
   private JLabel statusLabel;  
   private OFImage currentImage;  
   public ImageViewer()  
   {  
     currentImage = null;  
     makeFrame();  
   }  
   private void openFile()  
   {  
     int returnVal = fileChooser.showOpenDialog(frame);  
     if(returnVal != JFileChooser.APPROVE_OPTION) {  
       return;  
     }  
     File selectedFile = fileChooser.getSelectedFile();  
     currentImage = ImageFileManager.loadImage(selectedFile);  
     if(currentImage == null) {  // image file was not a valid image  
       JOptionPane.showMessageDialog(frame,  
           "The file was not in a recognized image file format.",  
           "Image Load Error",  
           JOptionPane.ERROR_MESSAGE);  
       return;  
     }  
     imagePanel.setImage(currentImage);  
     showFilename(selectedFile.getPath());  
     showStatus("File loaded.");  
     frame.pack();  
   }  
   private void close()  
   {  
     currentImage = null;  
     imagePanel.clearImage();  
     showFilename(null);  
   }  
   private void quit()  
   {  
     System.exit(0);  
   }  
   private void makeDarker()  
   {  
     if(currentImage != null) {  
       currentImage.darker();  
       frame.repaint();  
       showStatus("Applied: darker");  
     }  
     else {  
       showStatus("No image loaded.");  
     }  
   }  
   private void makeLighter()  
   {  
     if(currentImage != null) {  
       currentImage.lighter();  
       frame.repaint();  
       showStatus("Applied: lighter");  
     }  
     else {  
       showStatus("No image loaded.");  
     }  
   }  
   private void threshold()  
   {  
     if(currentImage != null) {  
       currentImage.threshold();  
       frame.repaint();  
       showStatus("Applied: threshold");  
     }  
     else {  
       showStatus("No image loaded.");  
     }  
   }  
   private void showAbout()  
   {  
     JOptionPane.showMessageDialog(frame,   
           "ImageViewer\n" + VERSION,  
           "About ImageViewer",   
           JOptionPane.INFORMATION_MESSAGE);  
   }  
   private void showFilename(String filename)  
   {  
     if(filename == null) {  
       filenameLabel.setText("No file displayed.");  
     }  
     else {  
       filenameLabel.setText("File: " + filename);  
     }  
   }  
   private void showStatus(String text)  
   {  
     statusLabel.setText(text);  
   }  
   private void makeFrame()  
   {  
     frame = new JFrame("ImageViewer");  
     makeMenuBar(frame);  
     Container contentPane = frame.getContentPane();  
     contentPane.setLayout(new BorderLayout(6, 6));  
     filenameLabel = new JLabel();  
     contentPane.add(filenameLabel, BorderLayout.NORTH);  
     imagePanel = new ImagePanel();  
     contentPane.add(imagePanel, BorderLayout.CENTER);  
     statusLabel = new JLabel(VERSION);  
     contentPane.add(statusLabel, BorderLayout.SOUTH);  
     showFilename(null);  
     frame.pack();  
     Dimension d = Toolkit.getDefaultToolkit().getScreenSize();  
     frame.setLocation(d.width/2 - frame.getWidth()/2, d.height/2 - frame.getHeight()/2);  
     frame.setVisible(true);  
   }  
   private void makeMenuBar(JFrame frame)  
   {  
     final int SHORTCUT_MASK =  
       Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();  
     JMenuBar menubar = new JMenuBar();  
     frame.setJMenuBar(menubar);  
     JMenu menu;  
     JMenuItem item;  
     menu = new JMenu("File");  
     menubar.add(menu);  
     item = new JMenuItem("Open");  
       item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, SHORTCUT_MASK));  
       item.addActionListener(new ActionListener() {  
                 public void actionPerformed(ActionEvent e) { openFile(); }  
               });  
     menu.add(item);  
     item = new JMenuItem("Close");  
       item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, SHORTCUT_MASK));  
       item.addActionListener(new ActionListener() {  
                 public void actionPerformed(ActionEvent e) { close(); }  
               });  
     menu.add(item);  
     menu.addSeparator();  
     item = new JMenuItem("Quit");  
       item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, SHORTCUT_MASK));  
       item.addActionListener(new ActionListener() {  
                 public void actionPerformed(ActionEvent e) { quit(); }  
               });  
     menu.add(item);  
     menu = new JMenu("Filter");  
     menubar.add(menu);  
     item = new JMenuItem("Darker");  
       item.addActionListener(new ActionListener() {  
                 public void actionPerformed(ActionEvent e) { makeDarker(); }  
               });  
     menu.add(item);  
     item = new JMenuItem("Lighter");  
       item.addActionListener(new ActionListener() {  
                 public void actionPerformed(ActionEvent e) { makeLighter(); }  
               });  
     menu.add(item);  
     item = new JMenuItem("Threshold");  
       item.addActionListener(new ActionListener() {  
                 public void actionPerformed(ActionEvent e) { threshold(); }  
               });  
     menu.add(item);  
     menu = new JMenu("Help");  
     menubar.add(menu);  
     item = new JMenuItem("About ImageViewer...");  
       item.addActionListener(new ActionListener() {  
                 public void actionPerformed(ActionEvent e) { showAbout(); }  
               });  
     menu.add(item);  
   }  
 }  

Class ImageFileManager

 import java.awt.image.*;  
 import javax.imageio.*;  
 import java.io.*;  
 public class ImageFileManager  
 {  
   private static final String IMAGE_FORMAT = "jpg";  
   public static OFImage loadImage(File imageFile)  
   {  
     try {  
       BufferedImage image = ImageIO.read(imageFile);  
       if(image == null || (image.getWidth(null) < 0)) {  
         return null;  
       }  
       return new OFImage(image);  
     }  
     catch(IOException exc) {  
       return null;  
     }  
   }  
   public static void saveImage(OFImage image, File file)  
   {  
     try {  
       ImageIO.write(image, IMAGE_FORMAT, file);  
     }  
     catch(IOException exc) {  
       return;  
     }  
   }  
 }  

Class ImagePanel

 import java.awt.*;  
 import javax.swing.*;  
 import java.awt.image.*;  
 public class ImagePanel extends JComponent  
 {  
   private int width, height;  
   private OFImage panelImage;  
   public ImagePanel()  
   {  
     width = 360;  
     height = 240;  
     panelImage = null;  
   }  
   public void setImage(OFImage image)  
   {  
     if(image != null) {  
       width = image.getWidth();  
       height = image.getHeight();  
       panelImage = image;  
       repaint();  
     }  
   }  
   public void clearImage()  
   {  
     Graphics imageGraphics = panelImage.getGraphics();  
     imageGraphics.setColor(Color.LIGHT_GRAY);  
     imageGraphics.fillRect(0, 0, width, height);  
     repaint();  
   }  
   public Dimension getPreferredSize()  
   {  
     return new Dimension(width, height);  
   }  
   public void paintComponent(Graphics g)  
   {  
     Dimension size = getSize();  
     g.clearRect(0, 0, size.width, size.height);  
     if(panelImage != null) {  
       g.drawImage(panelImage, 0, 0, null);  
     }  
   }  
 }  

Class OFImage

 import java.awt.*;  
 import java.awt.image.*;  
 import javax.swing.*;  
 public class OFImage extends BufferedImage  
 {  
   public OFImage(BufferedImage image)  
   {  
      super(image.getColorModel(), image.copyData(null),   
         image.isAlphaPremultiplied(), null);  
   }  
   public OFImage(int width, int height)  
   {  
     super(width, height, TYPE_INT_RGB);  
   }  
   public void setPixel(int x, int y, Color col)  
   {  
     int pixel = col.getRGB();  
     setRGB(x, y, pixel);  
   }  
   public Color getPixel(int x, int y)  
   {  
     int pixel = getRGB(x, y);  
     return new Color(pixel);  
   }  
   public void darker()  
   {  
     int height = getHeight();  
     int width = getWidth();  
     for(int y = 0; y < height; y++) {  
       for(int x = 0; x < width; x++) {  
         setPixel(x, y, getPixel(x, y).darker());  
       }  
     }  
   }  
   public void lighter()  
   {  
     int height = getHeight();  
     int width = getWidth();  
     for(int y = 0; y < height; y++) {  
       for(int x = 0; x < width; x++) {  
         setPixel(x, y, getPixel(x, y).brighter());  
       }  
     }  
   }  
   public void threshold()  
   {  
     int height = getHeight();  
     int width = getWidth();  
     for(int y = 0; y < height; y++) {  
       for(int x = 0; x < width; x++) {  
         Color pixel = getPixel(x, y);  
         int brightness = (pixel.getRed() + pixel.getBlue() + pixel.getGreen()) / 3;  
         if(brightness <= 85) {  
           setPixel(x, y, Color.BLACK);  
         }  
         else if(brightness <= 170) {  
           setPixel(x, y, Color.GRAY);  
         }  
         else {  
           setPixel(x, y, Color.WHITE);  
         }  
       }  
     }  
   }  
 }  

Output:



Komentar

Postingan populer dari blog ini

Tugas 2 APSI: ERD dan DFD Sistem Ticketing Kereta Api

Tugas 2 APSI: ERD dan DFD Sistem Ticketing Kereta Api DFD Level 0 DFD Level 1 DFD Level 2 ERD

Tugas 7 PBO: Fox & Rabbit Simulator

Class Location: public class Location { private int row; private int col; public Location(int row, int col) { this.row = row; this.col = col; } public boolean equals(Object obj) { if(obj instanceof Location) { Location other = (Location) obj; return row == other.getRow() && col == other.getCol(); } else { return false; } } public String toString() { return row + "," + col; } public int hashCode() { return (row << 16) + col; } public int getRow() { return row; } public int getCol() { return col; } } Class Field: import java.util.Collections; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Random; public class Field { private static final Random rand = Randomizer.getRandom(); priva...

RK 2: Studi Kasus: Aplikasi Gagal

1. Dennas Hassel A. 05111640000113 2. Akmal Darari RB. 05111640000148 Yik Yak Yik Yak merupakan aplikasi smartphone media sosial yang dapat digunakan tanpa harus melakukan registrasi apapun serta tidak ada informasi yang diminta. Aplikasi ini memungkinkan pengguna menggugah konten anonim. Pengguna dapat berbagi ataupun berdiskusi dengan orang-orang yang dekat dengan pengguna. Selain itu, pengguna dapat berkontribusi dengan menulis, merespon ataupun memilih “voting up” dan “voting down”. Yik Yak pada awalnya memiliki pangsa pasar yang cukup besar di Amerika Serikat dan sebagian besar merupakan kalangan muda. Kelemahan: Kelemahan dari sosial media ini adalah: 1. Gosip menjadi sangat menfrustasikan Beberapa mantan Yakkers (nama sebutan bagi pengguna Yik Yak), mengatakan bahwa mereka merasa frustrasi dengan informasi palsu yang begitu cepat menyebar melalui Yik Yak. Dengan Yik Yak orang-orang dapat menyebarkan pesan yang berisi berbagai ancaman, kata-kata yang memb...