Lectura De Un Archivo Binario (2 - GIF) - Ejercicio De Programacion C# Sharp

Este ejercicio en C# tiene como objetivo enseñar cómo verificar la validez de un archivo de imagen GIF. En este ejercicio, se requiere crear un programa que lea los primeros cuatro bytes de un archivo de imagen y verifique si corresponden a la cabecera típica de un archivo GIF. Los primeros cuatro bytes deben ser G, I, F y 8, lo que indica que el archivo podría ser un GIF válido.

Si el archivo parece correcto, el programa debe continuar verificando la versión del archivo GIF. Esto se hace observando el siguiente byte, que debe ser un 7 o un 9 para indicar las versiones 87a o 89a del formato GIF, respectivamente. Este ejercicio es una excelente manera de aprender sobre la manipulación de archivos binarios y cómo validar el formato de una imagen utilizando C#.

Al completar este ejercicio, mejorarás tus habilidades en la lectura y verificación de archivos, específicamente cómo interpretar los bytes de un archivo para determinar su formato y versión.

 Categoría

Administración de Archivos

 Ejercicio

Lectura De Un Archivo Binario (2 - GIF)

 Objectivo

Cree un programa de C# para comprobar si un archivo de imagen GIF parece ser correcto.

Debe ver si los primeros cuatro bytes son G, I, F, 8.

En caso de que parezca correcto, también debe mostrar la versión GIF (87 u 89), comprobando si el siguiente byte es un 7 o un 9.

 Ejemplo Ejercicio C#

 Copiar Código C#
// Importing necessary namespaces
using System; // Importing the System namespace for basic C# functionality
using System.IO; // Importing the IO namespace for file operations

public class GifFileChecker
{
    // Method to check if the GIF file seems to be correct and to display the GIF version
    public static void CheckGifFile(string fileName)
    {
        // Open the file in binary mode for reading
        using (BinaryReader reader = new BinaryReader(File.Open(fileName, FileMode.Open))) // Use BinaryReader to read bytes from the file
        {
            // Read the first four bytes of the file to check the header
            byte[] header = reader.ReadBytes(4); // Read the first 4 bytes

            // Check if the first four bytes are G, I, F, and 8
            if (header[0] == 0x47 && header[1] == 0x49 && header[2] == 0x46 && header[3] == 0x38) // Check if the bytes match "GIF8"
            {
                // Display that the file is a valid GIF file
                Console.WriteLine("This is a valid GIF file.");

                // Read the next byte to determine the GIF version
                byte versionByte = reader.ReadByte(); // Read the next byte

                // Check the version byte for 87 or 89
                if (versionByte == 0x37) // If the byte is 0x37 (ASCII for "7"), it is GIF 87
                {
                    Console.WriteLine("GIF Version: 87a"); // Display the GIF version
                }
                else if (versionByte == 0x39) // If the byte is 0x39 (ASCII for "9"), it is GIF 89
                {
                    Console.WriteLine("GIF Version: 89a"); // Display the GIF version
                }
                else
                {
                    Console.WriteLine("Unknown GIF version.");
                }
            }
            else
            {
                // If the first four bytes don't match "GIF8", it's not a valid GIF file
                Console.WriteLine("This is not a valid GIF file.");
            }
        }
    }
}

class Program
{
    // Main method where the program execution starts
    static void Main(string[] args)
    {
        // Check if the user provided the file name as an argument
        if (args.Length < 1) // If no file name is provided
        {
            Console.WriteLine("Please provide the GIF file name."); // Prompt user to provide the file
            return; // Exit the program if no file is provided
        }

        string fileName = args[0]; // Assign the file name from the command line argument

        // Check if the input file exists
        if (!File.Exists(fileName)) // If the file doesn't exist
        {
            Console.WriteLine($"The file '{fileName}' does not exist."); // Print error message
            return; // Exit the program if the file doesn't exist
        }

        // Call the method to check the GIF file
        GifFileChecker.CheckGifFile(fileName); // Check the file and display the result
    }
}

 Salida

Case: Valid GIF File

dotnet run example.gif
This is a valid GIF file.
GIF Version: 89a

Case: Invalid GIF File (Incorrect Header)

dotnet run example.txt
This is not a valid GIF file.

Case: File Does Not Exist

dotnet run nonexistent.gif
The file 'nonexistent.gif' does not exist.

Case: Missing File Argument

dotnet run
Please provide the GIF file name.

 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#.

  •  Base de datos de amigos, utilizando archivos

    Este ejercicio en C# tiene como objetivo ampliar una base de datos de amigos, permitiendo que los datos se carguen desde un archivo al inicio de ...

  •  Traductor de Pascal a C#

    Este ejercicio en C# consiste en crear un traductor básico de Pascal a C#. El programa debe aceptar código escrito en Pascal y convertirlo en un ...

  •  Convertir un archivo de texto en mayúsculas

    Este ejercicio en C# consiste en crear un programa que lea un archivo de texto y volque su contenido en otro archivo, realizando una transformación en el proceso. La ...

  •  Convertir cualquier archivo a mayúsculas

    Este ejercicio en C# consiste en crear un programa que lea un archivo de cualquier tipo y volque su contenido en otro archivo, aplicando una transformación en el proc...

  •  Conversor de archivos

    Este ejercicio en C# consiste en crear un programa que "invierte" un archivo. El programa debe tomar un archivo original y crear uno nuevo con el mismo nombre, pero c...

  •  Cifrador de archivos

    Este ejercicio en C# consiste en crear un programa que encripte un archivo de texto en otro archivo de texto. El programa debe ser capaz de leer el contenido de un ar...