Mostrar BPM En La Consola - Ejercicio De Programacion C# Sharp

Este ejercicio consiste en crear un programa en C# que decodifique un archivo de imagen en formato Netpbm (en particular, el formato P1, que es para imágenes en blanco y negro codificadas en ASCII) y lo muestre en la consola. El archivo de entrada puede contener una cabecera con "P1", opcionalmente un comentario, y las dimensiones de la imagen seguidas de datos representados por "1" para píxeles negros y "0" para píxeles blancos. El programa debe leer estos datos y mostrar la imagen en la consola utilizando caracteres para representar los píxeles, como "X" para los píxeles negros y " " (espacio) para los píxeles blancos. El ejercicio enseña a leer y procesar archivos con formato texto y trabajar con la consola en C#.

 Categoría

Administración de Archivos

 Ejercicio

Mostrar BPM En La Consola

 Objectivo

El formato Netpbm es una familia de formatos de archivo de imagen diseñados teniendo en cuenta la simplicidad, en lugar de un tamaño pequeño. Pueden representar imágenes en color, en escala de grises o BW utilizando texto sin formato (aunque exista una variante binaria).

Por ejemplo, una imagen en blanco y negro codificada en ASCII se representa utilizando el encabezado "P1".

La siguiente línea (opcional) puede ser un comentario, precedido de #.

La siguiente línea contiene el ancho y el alto de la imagen.

Las líneas restantes contienen los datos: 1 para los puntos negros 0 para los puntos blancos, como en este ejemplo:

P1
# Este es un mapa de bits de ejemplo de la letra "J"
6 10
0 0 0 0 1 0
0 0 0 0 1 0
0 0 0 0 1 0
0 0 0 0 1 0
0 0 0 0 1 0
0 0 0 0 1 0
1 0 0 0 1 0
0 1 1 1 0 0
0 0 0 0 0 0
0 0 0 0 0 0

(ese sería el contenido de un archivo llamado "j.pbm").

Cree un programa para decodificar un archivo de imagen como este y mostrarlo en la pantalla, utilizando solo la consola. Recuerda que el comentario es opcional.

 Ejemplo Ejercicio C#

 Copiar Código C#
// Import the System namespace for basic input/output operations
using System;  

// Import the System.IO namespace for file operations
using System.IO;  

// Declare the main Program class
class Program
{
    // Main method where the program starts
    static void Main()
    {
        // Specify the path to the PBM image file
        string filePath = "j.pbm";  // Replace this with the path to your PBM file

        // Try to read and display the PBM file content
        try
        {
            // Open the file using StreamReader to read text from the PBM file
            using (StreamReader reader = new StreamReader(filePath))
            {
                // Read the first line, which should be "P1" (PBM header)
                string header = reader.ReadLine();  
                if (header != "P1")  // Check if the header is "P1"
                {
                    Console.WriteLine("Invalid PBM format. Expected 'P1'.");
                    return;  // Exit the program if the header is not correct
                }

                // Read the optional comment line (skip it)
                string commentLine = reader.ReadLine();
                while (commentLine.StartsWith("#"))  // Check if the line starts with "#"
                {
                    commentLine = reader.ReadLine();  // Read the next line if it's a comment
                }

                // Read the width and height of the image
                string[] dimensions = commentLine.Split(' ');  // Split the dimensions by space
                int width = int.Parse(dimensions[0]);  // First element is the width
                int height = int.Parse(dimensions[1]);  // Second element is the height

                // Print a message to inform the user about the image size
                Console.WriteLine($"Image dimensions: {width} x {height}");

                // Loop through each row of pixels and print it to the console
                for (int y = 0; y < height; y++)  // Loop through each row
                {
                    // Read the next line, which contains the pixel data for the row
                    string row = reader.ReadLine();  
                    string[] pixels = row.Split(' ');  // Split the row into individual pixel values

                    // Loop through each pixel in the row
                    for (int x = 0; x < width; x++)  // Loop through each pixel in the row
                    {
                        // Check the pixel value: 0 means white, 1 means black
                        if (pixels[x] == "1")  
                        {
                            Console.Write("X");  // Display 'X' for black pixels
                        }
                        else
                        {
                            Console.Write(" ");  // Display a space for white pixels
                        }
                    }
                    Console.WriteLine();  // Move to the next line after printing the row
                }
            }
        }
        catch (Exception ex)  // Catch any errors that may occur during file reading
        {
            // Print the error message to the console
            Console.WriteLine($"Error reading the file: {ex.Message}");
        }
    }
}

 Salida

Input: The PBM file j.pbm contains the following:
P1
# Simple image example
5 4
1 0 1 0 1
0 1 0 1 0
1 0 1 0 1
0 1 0 1 0


Output: The program will display the following in the console:
Image dimensions: 5 x 4
X X X
 X X
X X X
 X X


Example Error Handling:
Error reading the file: The system cannot find the file specified.

 Comparte este Ejercicio C# Sharp

 Más Ejercicios de Programacion C# Sharp de Administración de Archivos

¡Explora nuestro conjunto de ejercicios de programación C# Sharp! Estos ejercicios, diseñados específicamente para principiantes, te ayudarán a desarrollar una sólida comprensión de los conceptos básicos de C#. Desde variables y tipos de datos hasta estructuras de control y funciones simples, cada ejercicio está diseñado para desafiarte de manera gradual a medida que adquieres confianza en la codificación en C#.

  •  Ancho y alto de PCX

    Este ejercicio consiste en crear un programa en C# que verifique si un archivo es una imagen en formato PCX y, si es así, extraiga y muestre las dimensiones (a...

  •  Extraer texto de un archivo binario

    Este ejercicio consiste en crear un programa en C# que extraiga solo los caracteres alfabéticos contenidos en un archivo binario y los volque en un archivo separado. ...

  •  Conversor de C# a Pascal

    Este ejercicio consiste en crear un programa en C# que convierta programas simples en C# a su equivalente en el lenguaje Pascal. El programa debe leer u...

  •  Volcado

    Este ejercicio consiste en crear una utilidad de "dump": un visor hexadecimal que muestra el contenido de un archivo, con 16 bytes por fila y 24 filas por pantalla. El progr...

  •  Extractor DBF

    Este ejercicio consiste en crear un programa que muestre la lista de campos almacenados en un archivo DBF. El formato DBF es utilizado por el antiguo gestor de bases de dato...

  •  Texto censurado

    Este ejercicio consiste en crear un programa que censure archivos de texto. El programa debe leer un archivo de texto y volcar su contenido a un nuevo archivo, reemplazando ...