Advertisement
javipinero

Colors are beautiful Java Tuenti Contest

Jun 21st, 2011
1,421
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.06 KB | None | 0 0
  1. package colors;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.FileInputStream;
  5. import java.io.InputStreamReader;
  6.  
  7. import javax.imageio.stream.*;
  8. import javax.imageio.ImageIO;
  9. import java.util.*;
  10. import javax.imageio.ImageReader;
  11. import java.awt.image.BufferedImage;
  12.  
  13. public class Colors {
  14.  
  15.     BufferedImage bi; // imagen
  16.  
  17.     public BufferedImage cargarImagen(String imagen) {
  18.  
  19.         try {
  20.             FileInputStream inputStream = new FileInputStream(imagen);
  21.             Iterator readers = ImageIO.getImageReadersBySuffix("bmp");
  22.             ImageReader reader = (ImageReader) readers.next();
  23.             ImageInputStream imageInputStream = ImageIO
  24.                     .createImageInputStream(inputStream);
  25.             reader.setInput(imageInputStream, false);
  26.             return reader.read(0);
  27.         } catch (Exception e) {
  28.             e.printStackTrace();
  29.         }
  30.         return null;
  31.     }
  32.    
  33.     public int obtenerComponentePixel(int line, int column, int offset) {
  34.         return (bi.getRGB(column, line) >> offset)&255;
  35.     }
  36.    
  37.     public int obtenerOffset(String componente) {
  38.         if (componente.equals("R")) {
  39.             return 16;
  40.         } else if (componente.equals("G")) {
  41.             return 8;
  42.         }
  43.         return 0;
  44.     }
  45.    
  46.     public int obtenerSumaLinea(int linea, String componente) {
  47.        
  48.         if (linea < 0 || linea >= bi.getHeight()) {
  49.             return -1;
  50.         }
  51.        
  52.         int offset = obtenerOffset(componente);
  53.         int resultado = 0;
  54.        
  55.         for (int i=0; i<bi.getWidth(); i++) {
  56.             resultado += obtenerComponentePixel(linea, i, offset);
  57.         }
  58.        
  59.         return resultado;
  60.     }
  61.    
  62.     public Colors(String ficheroImagen) {
  63.         bi = cargarImagen(ficheroImagen);
  64.     }
  65.  
  66.     public static void main(String[] args) {
  67.  
  68.         Colors colors = new Colors("trabaja.bmp");
  69.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  70.        
  71.         try {
  72.            
  73.             while (br.ready()) {
  74.            
  75.                 String datos = br.readLine().trim();
  76.                 if (!datos.isEmpty()) {
  77.                     String componente = datos.substring(0, 1);
  78.                     int linea = Integer.parseInt(datos.substring(1));
  79.                     System.out.println(colors.obtenerSumaLinea(linea, componente)+1);
  80.                 }
  81.                
  82.             }
  83.            
  84.         } catch (Exception e) {
  85.             e.printStackTrace();
  86.         }
  87.     }
  88.  
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement