Ejercicio
Mostrar BMP En La Consola
Objectivo
Desarrollar un programa Python para decodificar y mostrar un archivo de imagen Netpbm
El formato Netpbm es una familia de formatos de imagen diseñados para la simplicidad en lugar del tamaño del archivo. Estos formatos pueden representar imágenes en color, escala de grises o en blanco y negro mediante texto simple, aunque también existen versiones binarias.
Por ejemplo, una imagen en blanco y negro codificada en ASCII utiliza el encabezado "P1".
El archivo puede contener opcionalmente una línea de comentario que comience con #.
A continuación, las dimensiones de la imagen (ancho y alto) se enumeran en la siguiente línea.
Las líneas restantes contienen los datos de píxeles: 1 representa el negro y 0 representa el blanco. Por 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
Cree un programa Python para decodificar este tipo de archivo de imagen y mostrar su contenido en la consola. Tenga en cuenta que el comentario es opcional.
Ejemplo de ejercicio de Python
Mostrar código Python
# Python program to decode and display a Netpbm image (P1 format) from a file
def decode_netpbm(file_path):
try:
# Open the Netpbm file
with open(file_path, 'r') as file:
# Read the first line (P1 header)
header = file.readline().strip()
if header != 'P1':
print("Error: This is not a valid P1 Netpbm image.")
return
# Skip comment lines (if present)
while True:
line = file.readline().strip()
if line and not line.startswith('#'):
# This is the line with image dimensions (width and height)
width, height = map(int, line.split())
break
# Read and display the pixel data
print(f"Image dimensions: {width}x{height}")
print("Image Data:")
for _ in range(height):
row = file.readline().strip().split()
# Convert 0 to 'White' and 1 to 'Black' and display it
print(' '.join('Black' if pixel == '1' else 'White' for pixel in row))
except FileNotFoundError:
print(f"Error: The file '{file_path}' was not found.")
except Exception as e:
print(f"Error: {str(e)}")
# Example usage
decode_netpbm('image.pbm')
Output
Example Input (image.pbm):
P1
# This is an example bitmap of the letter "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
Example Output:
Image dimensions: 6x10
Image Data:
White White White White Black White
White White White White Black White
White White White White Black White
White White White White Black White
White White White White Black White
White White White White Black White
Black White White White Black White
White Black Black Black White White
White White White White White White
White White White White White White
Código de ejemplo copiado
Comparte este ejercicio de Python