
Написать программу, которая позволяет ввести имя bmp-файла, считать его заголовки и вывести на
консоль информацию о размере файла, ширине и высоте в пикселях, количестве бит на пиксель, разрешении горизонтальном и вертикальном (количестве пикселей на метр), типе сжатия (без сжатия / 4бит RLE / 8бит RLE). Подготовьте несколько файлов изображений и проверьте на них Вашу программу. Python

Ответы на вопрос

Ответ:
Console.WriteLine("Размер файла: {0}", BitConverter.ToInt32(arr, 0));
Чтобы не засорять код буферами и кодом преобразования можно использовать класс BinaryReader
C#Выделить код
using (var breader = new BinaryReader(File.OpenRead(file_path)))
{
breader.BaseStream.Position += 2;
Console.WriteLine("Размер файла: {0}", breader.ReadInt32());
}
Объяснение:



Для чтения заголовков BMP-файла и вывода информации о нем на консоль вам понадобится использовать структуры данных и байтовую обработку. Вот Python-программа, которая выполняет задачу, описанную в вашем вопросе:
pythonimport struct
def read_bmp_header(file_path):
try:
with open(file_path, 'rb') as file:
# Считываем заголовок файла BMP
file_type = file.read(2) # Сигнатура файла ('BM' - BMP формат)
file_size = struct.unpack('<I', file.read(4))[0] # Размер файла
reserved1 = struct.unpack('<H', file.read(2))[0] # Зарезервировано (должно быть 0)
reserved2 = struct.unpack('<H', file.read(2))[0] # Зарезервировано (должно быть 0)
data_offset = struct.unpack('<I', file.read(4))[0] # Смещение данных
# Считываем информацию о изображении
header_size = struct.unpack('<I', file.read(4))[0] # Размер заголовка
width = struct.unpack('<i', file.read(4))[0] # Ширина изображения
height = struct.unpack('<i', file.read(4))[0] # Высота изображения
planes = struct.unpack('<H', file.read(2))[0] # Количество цветовых плоскостей (должно быть 1)
bits_per_pixel = struct.unpack('<H', file.read(2))[0] # Бит на пиксель
compression = struct.unpack('<I', file.read(4))[0] # Тип сжатия
image_size = struct.unpack('<I', file.read(4))[0] # Размер данных изображения
x_pixels_per_meter = struct.unpack('<i', file.read(4))[0] # Горизонтальное разрешение (пикселей на метр)
y_pixels_per_meter = struct.unpack('<i', file.read(4))[0] # Вертикальное разрешение (пикселей на метр)
total_colors = struct.unpack('<I', file.read(4))[0] # Общее количество цветов
# Определение типа сжатия
compression_type = "Без сжатия"
if compression == 1:
compression_type = "RLE сжатие (4 бита)"
elif compression == 2:
compression_type = "RLE сжатие (8 бит)"
# Вывод информации на консоль
print(f"Имя файла: {file_path}")
print(f"Размер файла: {file_size} байт")
print(f"Ширина: {width} пикселей")
print(f"Высота: {height} пикселей")
print(f"Бит на пиксель: {bits_per_pixel}")
print(f"Горизонтальное разрешение: {x_pixels_per_meter} пикселей/метр")
print(f"Вертикальное разрешение: {y_pixels_per_meter} пикселей/метр")
print(f"Тип сжатия: {compression_type}")
except FileNotFoundError:
print(f"Файл '{file_path}' не найден.")
except Exception as e:
print(f"Произошла ошибка: {str(e)}")
if __name__ == "__main__":
file_path = input("Введите имя BMP-файла: ")
read_bmp_header(file_path)
Сохраните этот код в файле с расширением .py
, запустите его и введите имя BMP-файла, который вы хотите проанализировать. Программа считает его заголовки и выведет информацию о файле на консоль. Вы можете использовать этот код для анализа нескольких BMP-файлов.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili