Mostrar BMP en la consola V2 Aprende programación con ejercicios Visual Basic (VB.net)

Lección:

Administración de Archivos


Ejercicio:

Mostrar BMP en la consola V2 64


Objetivo:

Cree un programa para mostrar un archivo BMP de 72x24 en la consola.
Debe usar la información en el encabezado (ver el ejercicio del 7 de febrero). Preste atención al campo llamado "inicio de los datos de imagen". Después de esa posición, encontrará los píxeles de la imagen (puede ignorar la información sobre la paleta de colores y dibujar una "X" cuando el color es 255, y un espacio en blanco si el color es diferente).

Nota: puede crear una imagen de prueba, con los siguientes pasos (en Paint para Windows): Abra Paint, cree una nueva imagen, cambie sus propiedades en el menú Archivo para que sea una imagen en color, ancho 72, altura 24, guardar como "mapa de bits de 256 colores (BMP)".


Código:

Imports System
Imports System.IO
Public Class DisplayPGM
    Public Shared Sub Main(ByVal args As String())
        Dim inputFile As BinaryReader
        Dim fileName As String = ""

        If args.Length <> 1 Then
            Console.WriteLine("Please enter filename...")
            fileName = Console.ReadLine()
        Else
            fileName = args(0)
        End If

        If Not File.Exists(fileName) Then
            Console.WriteLine("the file not exists")
            Return
        End If

        Try
            inputFile = New BinaryReader(File.Open(fileName, FileMode.Open))
            Dim tag1 As Char = Convert.ToChar(inputFile.ReadByte())
            Dim tag2 As Char = Convert.ToChar(inputFile.ReadByte())
            Dim endOfLine As Byte = inputFile.ReadByte()

            If (tag1 <> "P"c) OrElse (tag2 <> "5"c) OrElse (endOfLine <> 10) Then
                Console.WriteLine("The file is not a PGM")
                inputFile.Close()
                Return
            End If

            Dim data As Byte = 0
            Dim sizeOfImage As String = ""

            While data <> 10
                data = inputFile.ReadByte()
                sizeOfImage += Convert.ToChar(data)
            End While

            Dim widthAndHeight As String() = sizeOfImage.Split(" "c)
            Dim width As Integer = Convert.ToInt32(widthAndHeight(0))
            Dim height As Integer = Convert.ToInt32(widthAndHeight(1))
            Dim maxIntensity1 As Char = Convert.ToChar(inputFile.ReadByte())
            Dim maxIntensity2 As Char = Convert.ToChar(inputFile.ReadByte())
            Dim maxIntensity3 As Char = Convert.ToChar(inputFile.ReadByte())
            Dim endOfLine1 As Byte = inputFile.ReadByte()

            If (maxIntensity1 <> "2"c) OrElse (maxIntensity2 <> "5"c) OrElse (maxIntensity3 <> "5"c) OrElse (endOfLine1 <> 10) Then
                Console.WriteLine("Must be 256 grey levels")
                inputFile.Close()
                Return
            End If

        Catch e As Exception
            Console.WriteLine("Error: {0}", e)
        End Try
    End Sub
End Class