Challenge 14: Colors Are Beautiful

_________________________________________________________________________
We are pretty sure you have seen this image before. It is time to take a closer look at it… hmmmm… lots of blue…

But there are also lots of others, as you are seeing a 24 bit color image. And to get those, every pixel has some information about the red, green and blue components in it.

Given a line of pixels in the image and a component color (RGB), you should compute the sum of that component for every pixel in the line + 1. In decimal.

Sample input

B515
G335
R380

Sample output

25763
93405
89089

TEST

G73
R481
B126

_________________________________________________________________________
UserInterface Class:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * Clase encargada de mantener el bucle de ejecución del programa hasta el fin de linea.
 * @author Javier de Pedro López
 */
public class UserInterface {

    /**
     * Permite mantener el bucle de lecutra.
     */
    public void run() throws IOException{
        String line;
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        //Bucle que realiza las lecturas hasta que lo recibido sea EOF (null)
        ImageLineReader imReader = new ImageLineReader("../trabaja.bmp");
        do{
            line = reader.readLine();
            if  (line != null && !line.trim().equals("")){
                char component = line.charAt(0);
                int lineImage = Integer.valueOf(line.substring(1));
                System.out.println(imReader.getSumComponent(lineImage, component));
            }
        } while(line != null);
    }
}

ImageLineReader Class:

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

/**
 * Clase encargada de leer las lineas de una imagen y devolver la suma de su componente.
 * @author Javier de Pedro López
 */
class ImageLineReader {

    //ATRIBUTOS//
    private BufferedImage _image;

    //CONSTRUCTORES//
    /**
     * Instancia una nueva imagen.
     * @param nameImage nombre de la imagen a guardar en el buffer.
     * @throws IOException error si no se encuentra la imagen.
     */
    public ImageLineReader(String nameImage) throws IOException{
        _image = ImageIO.read(new File(nameImage));
    }
    //METODOS//
    /**
     * Permite obtener la suma de una fila de una imagen determinada.
     * @param line la linea de la que se quiere obtener la suma.
     * @param component componente r, g o b que se quiere obtener.
     * @return la suma de la componente en la fila.
     */
    public int getSumComponent(int line, char component){
        int sum = 0;
        for (int i = 0; i < _image.getWidth(); i++){
            Color color = new Color(_image.getRGB(i, line));
            if (component == 'R'){
                sum += color.getRed();
            }else if(component == 'G'){
                sum += color.getGreen();
            }else if (component == 'B'){
                sum += color.getBlue();
            }
        }
        return sum + 1;
    }
}

Un pensamiento en “Challenge 14: Colors Are Beautiful

  1. Pingback: Poesía binaria » Recopilación de soluciones para los retos de #tuentiContest . Challenge #14

Los comentarios están cerrados.