Почему различные расширения JPEG?

Во время работы с загрузчиком я столкнулся с функцией Python mimetypes.guess_extension:

In [2]: mimetypes.guess_extension('image/jpeg', strict=False)
Out[2]: '.jpe'

Я знал, что jpeg и jpg являются действительными расширениями JPEG, но я не знал о jpe. Таким образом, просмотр сайта wikipedia показал следующее:

Наиболее распространенными расширениями файлов для файлов, использующих сжатие JPEG, являются:.jpg и .jpeg, хотя .jpe,.jfif и .jif также используются

Еще больше расширений, о которых я не знал.

Итак, главный вопрос: почему у JPEG есть так много (действительных) расширений, связанных с ним?

В соответствующей заметке я хотел бы знать, почему Python возвращает "jpe", а не "jpg" или "jpeg", поскольку я вижу, что они больше всего использовались.

Ответы

Ответ 1

Появляется mimetypes.guess_extension возвращает первое из возможных расширений:

def guess_extension(self, type, strict=True):
    # ...
    extensions = self.guess_all_extensions(type, strict)
    if not extensions:
        return None
    return extensions[0]

Итак, вы попадете в первую очередь в списке, возвращаемом mimetypes.guess_all_extensions, который оказывается:

>>> mimetypes.guess_all_extensions('image/jpeg', strict=False)
['.jpe', '.jpg', '.jpeg']

Мое предположение о том, почему .jpe также верно:

В версиях DOS и ранних версий имена файлов могут содержать только 8 символов и 3 символа для расширения (см. статью 8.3 filename в Википедии для получения дополнительной информации Информация). Может быть, они сократили JPEG до .JPE или .jpe - вот почему у нас теперь есть .jpe,.jpeg и .jpg.

Это действительно так, что .jpeg и .jpg более распространены.

Ответ 2

В строгом смысле jpeg - это алгоритм сжатия изображения, а не формат файла.

JFIF (формат обмена файлами JPEG) - это обычный формат файла, который использует сжатие jpeg. EXIF (сменный формат файла изображений) - это другой формат с использованием jpeg, используемый в цифровой камере. Большинство людей склонны считать, что этот формат один и тот же, но это не так.

TIFF также может быть закодирован в формате jpeg.