English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Python базовый курс

Python управление потоком

Функции Python

Типы данных Python

Python файловые операции

Python объекты и классы

Python дата и время

Python продвинутые знания

Python справочник

Python программа определяет размер изображения (разрешение)

Полное руководство по примерам Python

Вы узнаете, как найти разрешение jpeg изображения в этом примере, не используя внешние библиотеки

Чтобы понять этот пример, вы должны понять следующееПрограммирование на PythonТема:

JPEG (произносится как 'jay-peg') означает группу экспертов по объединению изображений. Это один из самых широко используемых методов сжатия изображений.

Большинство форматов файлов имеют заголовки (несколько первых байт), которые содержат полезную информацию о файле.

Например, заголовок jpeg содержит информацию о высоте, ширине, количестве цветов (оттенок или RGB) и т.д. В этой программе мы нашли разрешение jpeg изображения, читая эти заголовки, не используя никакие внешние библиотеки.

Исходный код поиска разрешения изображения JPEG

def jpeg_res(filename):
   """Эта функция печатающая разрешение jpeg изображения файла, переданного в нее"""
   # Открываем изображение, читаем в двоичном режиме
   with open(filename, 'rb') as img_file:
       # Высота изображения (в байтах) находится на 164-м байте
       img_file.seek(163)
       # Чтение 2 байт
       a = img_file.read(2)
       # Рассчитываем высоту
       height = (a[0] << 8) + a[1]
       # Следующие два байта - это ширина
       a = img_file.read(2)
       # Рассчитываем ширину
       width = (a[0] << 8) + a[1]
   print("Разрешение изображения", width, "x", height)
jpeg_res("img1.jpg")

Результат вывода

Разрешение изображения 280 x 280

В этом программном обеспечении мы открываем изображение в двоичном режиме. Неназванные текстовые файлы должны быть открыты в этом режиме. Высота изображения находится на 164-м байте, затем ширина изображения. Оба параметра имеют длину в 2 байта.

Обратите внимание, что это относится только к формату файла обмена изображениями JPEG (JFIF). Если ваше изображение закодировано с использованием других стандартов (например, EXIF), код не будет работать.

Мы используем оператор位移а по сдвигу << для преобразования 2 байт в число. В конце концов, мы показываем разрешение.

Полное руководство по примерам Python