Facebook
From jaro, 1 Month ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 46
  1. import java.awt.Canvas;
  2. import java.awt.Graphics;
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5. import java.awt.image.BufferedImage;
  6. import java.io.File;
  7. import java.io.IOException;
  8. import java.util.ArrayList;
  9. import java.util.Arrays;
  10. import java.util.List;
  11. import java.util.logging.Level;
  12. import java.util.logging.Logger;
  13. import javax.imageio.ImageIO;
  14. import javax.swing.JButton;
  15. import javax.swing.JFrame;
  16. import javax.swing.JLabel;
  17. import javax.swing.JTextField;
  18.  
  19. public class Main extends JFrame {
  20.  
  21.     JLabel label;
  22.     JLabel lLiczbaPikseliNapis, lLiczbaPikseli, lLiczbaPikseliParralelStreamNapis, lLiczbaPikseliParralelStream;
  23.     JLabel lCzasNapis, lCzasParralelStreamNapis, lCzas, lCzasParralelStream;
  24.     JTextField textField;
  25.     PasekSzaroÅ›ci pasekSzaroÅ›ci;
  26.     JButton bzaladuj;
  27.  
  28.     Canvas canvas;
  29.     BufferedImage obraz;
  30.     List<Integer> lista;
  31.     Graphics kredka;
  32.  
  33.     public Main() {
  34.    
  35.                
  36.                
  37.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  38.         setLayout(null);
  39.         //setBounds(100,100,500,500);
  40.         setExtendedState(JFrame.MAXIMIZED_BOTH);
  41.         setVisible(true);
  42.         setTitle("projekt 2 - ParralelStream");
  43.  
  44.         label = new JLabel();
  45.         label.setBounds(0, 0, 200, 25);
  46.         label.setVisible(true);
  47.         label.setText("wpisz adres pliku");
  48.         add(label);
  49.  
  50.         textField = new JTextField();
  51.         textField.setBounds(0, 25, getWidth(), 25);
  52.         textField.setVisible(true);
  53.         textField.setText("C:\\Users\\Media\\Desktop\\zdjecie.jpg");
  54.         add(textField);
  55.         textField.repaint();
  56.  
  57.         bzaladuj = new JButton();
  58.         bzaladuj.setVisible(true);
  59.         bzaladuj.setText("zaladuj");
  60.         bzaladuj.setBounds(0, 50, 100, 25);
  61.         bzaladuj.addActionListener(bzaladujListener);
  62.         add(bzaladuj);
  63.         bzaladuj.repaint();
  64.  
  65.         pasekSzaroÅ›ci = new PasekSzaroÅ›ci(0, 75, getWidth(), 25, this);
  66.  
  67.         lLiczbaPikseliNapis = new JLabel();
  68.         lLiczbaPikseliNapis.setBounds(0, 100, 100, 25);
  69.         lLiczbaPikseliNapis.setVisible(true);
  70.         lLiczbaPikseliNapis.setText("liczba pikseli: ");
  71.         add(lLiczbaPikseliNapis);
  72.         lLiczbaPikseliNapis.repaint();
  73.  
  74.         lLiczbaPikseli = new JLabel();
  75.         lLiczbaPikseli.setBounds(100, 100, 100, 25);
  76.         lLiczbaPikseli.setVisible(true);
  77.         lLiczbaPikseli.setText("0");
  78.         add(lLiczbaPikseli);
  79.         lLiczbaPikseli.repaint();
  80.  
  81.         lLiczbaPikseliParralelStreamNapis = new JLabel();
  82.         lLiczbaPikseliParralelStreamNapis.setBounds(200, 100, 250, 25);
  83.         lLiczbaPikseliParralelStreamNapis.setVisible(true);
  84.         lLiczbaPikseliParralelStreamNapis.setText("liczba pikseli ParralelStream: ");
  85.         add(lLiczbaPikseliParralelStreamNapis);
  86.         lLiczbaPikseliParralelStreamNapis.repaint();
  87.  
  88.         lLiczbaPikseliParralelStream = new JLabel();
  89.         lLiczbaPikseliParralelStream.setBounds(400, 100, 200, 25);
  90.         lLiczbaPikseliParralelStream.setVisible(true);
  91.         lLiczbaPikseliParralelStream.setText("0");
  92.         add(lLiczbaPikseliParralelStream);
  93.         lLiczbaPikseliParralelStream.repaint();
  94.  
  95.         canvas = new Canvas();
  96.         canvas.setBounds(0, 150, this.getWidth(), this.getHeight() - 150);
  97.         canvas.setVisible(true);
  98.         add(canvas);
  99.         canvas.repaint();
  100.  
  101.         lCzasNapis = new JLabel();
  102.         lCzasNapis.setBounds(0, 125, 100, 25);
  103.         lCzasNapis.setVisible(true);
  104.         lCzasNapis.setText("czas: ");
  105.         add(lCzasNapis);
  106.         lCzasNapis.repaint();
  107.  
  108.         lCzas = new JLabel();
  109.         lCzas.setBounds(100, 125, 100, 25);
  110.         lCzas.setVisible(true);
  111.         lCzas.setText("0");
  112.         add(lCzas);
  113.         lCzas.repaint();
  114.  
  115.         lCzasParralelStreamNapis = new JLabel();
  116.         lCzasParralelStreamNapis.setBounds(200, 125, 200, 25);
  117.         lCzasParralelStreamNapis.setVisible(true);
  118.         lCzasParralelStreamNapis.setText("czas ParralelStream: ");
  119.         add(lCzasParralelStreamNapis);
  120.         lCzasParralelStreamNapis.repaint();
  121.  
  122.         lCzasParralelStream = new JLabel();
  123.         lCzasParralelStream.setBounds(400, 125, 100, 25);
  124.         lCzasParralelStream.setVisible(true);
  125.         lCzasParralelStream.setText("0");
  126.         add(lCzasParralelStream);
  127.         lCzasParralelStream.repaint();
  128.  
  129.     }
  130.  
  131.     public static void main(String[] args) {
  132.         Main okno = new Main();
  133.     }
  134.  
  135.     ActionListener bzaladujListener = new ActionListener() {
  136.  
  137.         @Override
  138.         public void actionPerformed(ActionEvent e) {
  139.             try {
  140.                 zaladujObraz();
  141.             } catch (IOException ioex) {
  142.                 textField.setText("ProszÄ™ podaj poprawnÄ… Å›cieżkÄ™ :)");
  143.                 return;
  144.             }
  145.            wyszarzObraz();
  146.             zaladujObrazZTablicy();
  147.            
  148.         }
  149.     };
  150.  
  151.     public void zaladujObraz() throws IOException {
  152.         obraz = ImageIO.read(new File(textField.getText()));
  153.         kredka = canvas.getGraphics();
  154.         kredka.drawImage(obraz, 0, 0, canvas.getWidth(), canvas.getHeight(), null);
  155.         lista = new ArrayList<>();
  156.         for (int y = 0; y < obraz.getHeight(); y++) {
  157.             for (int x = 0; x < obraz.getWidth() ; x++) {
  158.                 lista.add(obraz.getRGB(x, y));
  159.             }
  160.         }
  161.  
  162.     }
  163.  
  164.     public void wyszarzObraz() {
  165.         for (int i = 0; i < lista.size(); i++) {
  166.             lista.set(i, lista.get(i)+0x1000000);
  167.             int R = lista.get(i) / 0x010000;
  168.             int G = (lista.get(i) % 0x010000) / 0x000100;
  169.             int B = lista.get(i) % 0x000100;
  170.             int s = (int) (R * 0.33 + G * 0.33 + B * 0.33);
  171.             lista.set(i,s * 0x010000 + s * 0x000100 + s);
  172.         }
  173.     }
  174.  
  175.     public void zaladujObrazZTablicy() {
  176.         for (int i = 0; i < lista.size(); i++) {
  177.             obraz.setRGB(i % obraz.getWidth(), i / obraz.getWidth(), lista.get(i));
  178.         }
  179.         try {
  180.             Thread.sleep(100);
  181.         } catch (InterruptedException ex) {
  182.             Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
  183.         }
  184.         kredka.drawImage(obraz, 0, 0, canvas.getWidth(), canvas.getHeight(), null);
  185.     }
  186.  
  187.     public void zliczajPiksele() {
  188.         int liczbaPikseli = 0;
  189.         liczbaPikseli = (int) lista.stream().filter(e -> e >= pasekSzaroÅ›ci.getKolor()).count();
  190.         this.lLiczbaPikseli.setText(liczbaPikseli + "");
  191.     }
  192.    
  193.    
  194.  
  195.     void zliczajPikseleParralel() {
  196.         int liczbaPikseli = (int) lista.parallelStream().filter(e -> e >= pasekSzaroÅ›ci.getKolor()).count();
  197.         this.lLiczbaPikseliParralelStream.setText(liczbaPikseli + "");
  198.     }
  199.    
  200.    
  201. }