Mostrar Una Imagen BMP En La Consola En C#

Este programa lee un archivo de imagen BMP de 72x24 y lo muestra en la consola. Utiliza la información del encabezado BMP para determinar el inicio de los datos de la imagen y procesa los píxeles según corresponda. El programa ignora la paleta de colores y muestra una "X" para los píxeles cuyo color sea 255 (blanco) y un espacio en blanco para los demás colores. El ancho y la altura de la imagen son fijos en 72x24, y el programa está diseñado para leer una imagen BMP de 256 colores. El formato de archivo incluye los datos del encabezado necesarios, que se utilizan para localizar los datos de píxeles en el archivo.



Grupo

Manejo de archivos en C#

Objectivo

1. Abra el archivo BMP y lea el encabezado para obtener la posición de los datos de la imagen (inicio de los datos de la imagen).
2. Omita cualquier información irrelevante, como la paleta de colores.
3. Para cada píxel de la imagen, verifique su valor de color.
4. Si el valor de color es 255, muestre una 'X' en la consola; de lo contrario, muestre un espacio en blanco.
5. La imagen tendrá 72 píxeles de ancho y 24 píxeles de alto, así que asegúrese de que el programa gestione estas dimensiones correctamente.

Cree un programa para mostrar un archivo BMP de 72x24 en la consola.

Ejemplo de ejercicio en C#

 Copiar código C#
using System;
using System.IO;

class BMPDisplay
{
    // Main method to execute the program
    static void Main(string[] args)
    {
        // Check if the user has provided a file name as a command-line argument
        if (args.Length == 0)
        {
            Console.WriteLine("Please provide a BMP file name as a command-line argument.");
            return;
        }

        // Define the file path from the command-line argument
        string filePath = args[0];

        // Open the BMP file for reading in binary mode
        using (BinaryReader reader = new BinaryReader(File.Open(filePath, FileMode.Open)))
        {
            // Read the BMP file header
            reader.BaseStream.Seek(18, SeekOrigin.Begin);  // Seek to the width/height part of the header
            int width = reader.ReadInt32();  // Read image width
            int height = reader.ReadInt32();  // Read image height

            // Skip to the start of image data (offset is 54 + header size for color palette)
            reader.BaseStream.Seek(10, SeekOrigin.Begin);
            int imageDataOffset = reader.ReadInt32();  // Get the start of image data

            // Jump to the image data
            reader.BaseStream.Seek(imageDataOffset, SeekOrigin.Begin);

            // Loop through each row of the image
            for (int y = 0; y < height; y++)
            {
                // Loop through each pixel in the row
                for (int x = 0; x < width; x++)
                {
                    // Read the pixel color (1 byte for grayscale, as it's a 256-color image)
                    byte pixel = reader.ReadByte();

                    // If the color value is 255 (white), display "X", otherwise display a blank space
                    if (pixel == 255)
                    {
                        Console.Write("X");
                    }
                    else
                    {
                        Console.Write(" ");  // Blank space for other colors
                    }
                }

                // Move to the next line after each row of pixels
                Console.WriteLine();
            }
        }

        // Notify the user that the operation is complete
        Console.WriteLine("BMP file has been processed and displayed.");
    }
}

 Output

X X X X X X X X X X X X X X X X X X X X X X X X X X X X
X X     X   X X X   X X X X     X X   X     X X X X   X 
X X X     X X     X   X     X X X   X X   X X     X     X
... (continuation of 72 characters per line for 24 rows)

Comparte este ejercicio de C#

Practica más ejercicios C# de Manejo de archivos en C#

¡Explora nuestro conjunto de ejercicios de práctica de C#! Diseñados específicamente para principiantes, estos ejercicios te ayudarán a desarrollar una sólida comprensión de los fundamentos de C#. Desde variables y tipos de datos hasta estructuras de control y funciones simples, cada ejercicio está diseñado para desafiarte gradualmente a medida que adquieres confianza en la programación en C#..