English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Полное руководство по примерам Python
Вы узнаете, как найти разрешение jpeg изображения в этом примере, не используя внешние библиотеки
Чтобы понять этот пример, вы должны понять следующееПрограммирование на PythonТема:
JPEG (произносится как 'jay-peg') означает группу экспертов по объединению изображений. Это один из самых широко используемых методов сжатия изображений.
Большинство форматов файлов имеют заголовки (несколько первых байт), которые содержат полезную информацию о файле.
Например, заголовок jpeg содержит информацию о высоте, ширине, количестве цветов (оттенок или RGB) и т.д. В этой программе мы нашли разрешение 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 байт в число. В конце концов, мы показываем разрешение.