Advertisement
franciscominajas

Modos2.java

Feb 27th, 2014
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.94 KB | None | 0 0
  1.  
  2. import java.awt.Color;
  3. import java.awt.Graphics;
  4. import java.awt.Image;
  5. import java.awt.image.BufferedImage;
  6. import java.io.File;
  7. import java.io.IOException;
  8. import javax.imageio.ImageIO;
  9. import javax.imageio.stream.ImageInputStream;
  10. import javax.swing.ImageIcon;
  11. import javax.swing.JFileChooser;
  12. import javax.swing.JFrame;
  13. import javax.swing.JLabel;
  14. import javax.swing.JPanel;
  15. import javax.swing.filechooser.FileNameExtensionFilter;
  16.  
  17. public class Modos {
  18.     public static int N=3;
  19.     public static Image image;
  20.     public static BufferedImage bi;
  21.     public static Graphics gr;
  22.    
  23. ///////////////     ECB     ///////////////////////
  24.    
  25.     public int[][] ECB_RGB(File input) throws IOException
  26.     {
  27.         image= new ImageIcon(input.getAbsolutePath()).getImage();
  28.         bi = new BufferedImage( image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_ARGB);  
  29.         gr = bi.getGraphics();
  30.         gr.drawImage(image, 0, 0, null);
  31.        
  32.         Color c;
  33.         int r, g, b;
  34.            
  35.         int tam = bi.getHeight() * bi.getWidth();
  36.         int p=0;
  37.         int[][] MatPixel = new int[tam][3];
  38.         while(p<tam){
  39.             for(int y=0; y < bi.getHeight(); y++)
  40.             {
  41.                 for(int x=0; x< bi.getWidth(); x++)
  42.                 {
  43.                     c = new Color(bi.getRGB(x, y));
  44.                     r = c.getRed();
  45.                     g = c.getGreen();
  46.                     b = c.getBlue();
  47.                     MatPixel[p][0] = r;
  48.                     MatPixel[p][1] = g;
  49.                     MatPixel[p][2] = b;
  50.                     p++;
  51.                 }
  52.             }
  53.         }
  54.         return MatPixel;
  55. }
  56.    
  57.     public int[][] Multiplicacion(int MatPix[][],int Key[][])
  58.     {
  59.         System.out.println(MatPix.length);
  60.         int Multiplicacion[][]= new int [MatPix.length][3];
  61.         for(int k=0; k<MatPix.length ; k++)
  62.         {
  63.             for(int j=0; j<N; j++)
  64.             {
  65.                 for(int i=0; i<N; i++)
  66.                 {
  67.                     Multiplicacion[k][j]+= MatPix[k][i]*Key[i][j];
  68.                     Multiplicacion[k][j]=ObtenerMod(Multiplicacion[k][j]);
  69.                 }
  70.             }
  71.         }
  72.         return Multiplicacion;
  73. }
  74.    
  75.     public void ModificarRGB(JPanel Panel,int result[][]) throws IOException
  76.     {
  77.             bi = new BufferedImage( image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_ARGB);  
  78.             gr = bi.getGraphics();
  79.             gr.drawImage(image, 0, 0, null);
  80.             System.out.println("desde modificar RGB");
  81.            
  82.             Color c;
  83.             int p=0, r, g, b;
  84.             while(p<bi.getHeight())
  85.             {
  86.                 for(int y=0; y < bi.getHeight(); y++)
  87.                 {
  88.                     for(int x=0; x< bi.getWidth(); x++)
  89.                     {
  90.                             //c = new Color(bi.getRGB(x, y));
  91.                             r = (int)result[p][0];
  92.                             g = (int)result[p][1];
  93.                             b = (int)result[p][2];
  94.                             c = new Color(r, g, b);
  95.                             bi.setRGB(x, y, c.getRGB());
  96.                             p++;
  97.                         }
  98.                     }
  99.             }
  100.             //Mostramos Imgen
  101.            
  102.             //JFrame frame = new JFrame("Resultado");
  103.             //frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  104.             Panel.add(new Panel(bi, Panel.getSize()));
  105.             Panel.setVisible(true);
  106.             Panel.repaint();
  107.             GuardarIma(bi);
  108. //            JLabel label = new JLabel(new ImageIcon(bi));    
  109. //            frame.getContentPane().add(label);
  110. //            frame.pack();
  111. //            frame.setVisible(true);
  112. //            System.out.println("Ya sali");
  113. //            return bi;
  114.         }
  115.    
  116.    
  117.     public int[] ProductoPix(int []Pix, int Key[][])
  118.     {
  119.         int producto[]= new int[Pix.length];
  120.         for(int i=0; i<Pix.length; i++)
  121.         {
  122.             for(int j=0; j<Pix.length; j++)
  123.             {
  124.                 producto[i]+= Pix[j]*Key[j][i];
  125.                 producto[i]= ObtenerMod(producto[i]);
  126.             }
  127.         }
  128.         return producto;
  129.     }
  130.    
  131.    
  132.     //////////////      Metodos Gnerales     /////////////////////////
  133.    
  134.     public int ObtenerInverso(int det){
  135.         int i;
  136.         int inverso = 0;
  137.         int modulo;
  138.         int Z= 256;
  139.         for(i=0; i<Z; i++){
  140.                 modulo = (det*i)%Z;
  141.                if(modulo == 1)
  142.                {
  143.                    inverso = i;
  144.                }
  145.         }
  146.         return inverso;
  147.     }
  148.    
  149.     public void Imprimir(int [][]aux){
  150.         int i,j;            
  151.         for(i=0; i<aux.length; i++)
  152.         {
  153.             for(j=0; j<aux.length; j++)
  154.             {
  155.                 System.out.printf("%3d \t",aux[i][j]);
  156.             }
  157.             System.out.print("\n");
  158.         }
  159.     }
  160.    
  161.     public int ObtenerMod(int num){
  162.         if(num<0)
  163.         {
  164.             while(num<0)
  165.             {
  166.                 num = num + 256;
  167.             }
  168.         }
  169.         else
  170.         {
  171.             num = num %256;
  172.         }
  173.         return num;
  174.     }
  175.      
  176.     public int ObtenerDeter(int aux[][])
  177.     {
  178.         int deter = 0;
  179.         if(aux.length==2)
  180.         {
  181.             deter = (aux[0][0]*aux[1][1])-(aux[1][0]*aux[0][1]);
  182.         }
  183.         else if(aux.length==3)
  184.         {
  185.          deter=( aux[0][0]*( (aux[1][1]*aux[2][2]) - (aux[2][1]*aux[1][2]) ) -
  186.                  aux[0][1]*( (aux[1][0]*aux[2][2]) - (aux[2][0]*aux[1][2]) ) +
  187.                  aux[0][2]*( (aux[1][0]*aux[2][1]) - (aux[2][0]*aux[1][1]) ) );
  188.         }
  189.          return deter;
  190.     }  
  191.      
  192.     public int[][] matrizCofactores(int [][]inversa)
  193.     {
  194.         int [][]aux= new int[inversa.length][inversa.length];
  195.         for(int i= 0; i<inversa.length; i++){
  196.             for(int j=0; j<inversa.length; j++)
  197.             {
  198.                 int[][] det = new int[inversa.length-1][inversa.length-1];
  199.                 int detValor;
  200.                 for(int k=0; k<inversa.length; k++)
  201.                 {
  202.                     if(k!=i)
  203.                     {
  204.                         for(int l=0; l<inversa.length; l++)
  205.                         {
  206.                             if(l!=j)
  207.                             {
  208.                                 int indice1 = k<i ? k : k-1;
  209.                                 int indice2 = l<j ? l : l-1;
  210.                                 det[indice1][indice2]=inversa[k][l];
  211.                             }
  212.                         }
  213.                     }
  214.                 }
  215.             detValor = ObtenerDeter(det);
  216.             aux[i][j]= (int) (detValor * Math.pow(-1,i+j+2));
  217.             }
  218.         }
  219.         return aux;
  220.     }
  221.    
  222.     public int[][] transpuesta(int x[][]){
  223.         int resp[][]=new int[1][1];
  224.     try {
  225.             resp=new int[N][N];
  226.             for(int i=0; i<N; i++) {
  227.                 for(int j=0; j<N; j++){
  228.                     resp[i][j]=x[j][i];
  229.         }
  230.             }
  231.             } catch (NegativeArraySizeException e) {
  232.                     System.out.println("\tERROR: TAMANO DEL VECTOR NEGATIVO");
  233.             }
  234.     return resp;
  235.     }
  236.    
  237.     public int [][] inversa(int matriz[][], int determinate)
  238.     {
  239.         int[][] inversa = new int[matriz.length][matriz.length];
  240.             for(int i=0; i<matriz.length; i++)
  241.             {
  242.                 for(int j=0; j<matriz.length; j++)
  243.                 {
  244.                     inversa[i][j] = ObtenerMod(matriz[i][j]*determinate);
  245.                 }
  246.             }
  247.             return inversa;
  248.     }
  249.    
  250.     public int [][] generadordematrices()
  251.     {
  252.         int matriz[][]=new int[3][3];
  253.         for(int i=0; i<matriz.length; i++)
  254.         {
  255.             for(int j=0; j<matriz.length; j++)
  256.             {
  257.                 //en construccion
  258.                 matriz[i][j] = (int) Math.floor(Math.random()*(1-100)+99);
  259.             }
  260.         }
  261.         return matriz;
  262.     }
  263.    
  264.     public void GuardarIma(BufferedImage bi) throws IOException
  265.     {
  266.         JFileChooser fc = new JFileChooser();
  267.         fc.addChoosableFileFilter(new FileNameExtensionFilter("todos los archivos *.png", "png", "PNG"));
  268.         int elegido = fc.showSaveDialog(null);
  269.        
  270.         try{
  271.             if(elegido == JFileChooser.APPROVE_OPTION)
  272.             {
  273.                 File output = fc.getSelectedFile();
  274.                 String ubicacion = output.getAbsolutePath();
  275.                 if(!(ubicacion.endsWith(".png")))
  276.                 {
  277.                     File g = new File(ubicacion+".png");
  278.                     output.renameTo(g);
  279.                     System.out.println(output.getAbsolutePath());
  280.                     ImageIO.write(bi, "png", new File(ubicacion));
  281.                 }
  282.                
  283.             }            
  284.         }
  285.         catch(Exception e)
  286.         {
  287.             System.out.println("no se guardo");
  288.         }
  289.     }
  290. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement