【问题标题】:Why the various JPEG Extensions?为什么会有各种 JPEG 扩展?
【发布时间】:2023-03-22 20:47:01
【问题描述】:

在开发下载器时,我在 Python 的 mimetypes.guess_extension 函数中遇到了以下问题:

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

我知道 jpegjpg 是有效的 JPEG 扩展,但我不知道 jpe。所以查看维基百科网站确实揭示了以下内容:

使用 JPEG 压缩的文件最常见的文件扩展名是 .jpg 和 .jpeg,但也使用 .jpe、.jfif 和 .jif

还有更多我不知道的扩展。

那么主要的问题是:为什么 JPEG 有这么多(有效的)扩展与之相关联?

在相关说明中,我想知道为什么 Python 确实返回 'jpe' 而不是 'jpg' 或 'jpeg',因为我看到它们使用得最多。

【问题讨论】:

    标签: python mime-types image 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 和早期 Windows 版本中,文件名只能有 8 个字符和 3 个字符作为扩展名(有关更多信息,请参阅 Wikipedia 上的文章 8.3 filename)。可能是他们将 JPEG 缩写为 .JPE 或 .jpe - 这就是我们现在拥有 .jpe、.jpeg 和 .jpg 的原因。

    确实,.jpeg 和 .jpg 更常见。

    【讨论】:

      【解决方案2】:

      从严格意义上说,jpeg 是一种图像压缩算法,而不是一种文件格式。

      JFIF(JPEG 文件交换格式)是使用 jpeg 压缩的常用文件格式。 EXIF(可交换图像文件格式)是另一种使用 jpeg 的格式,用于数码相机。 大多数人倾向于认为这些格式是相同的,但事实并非如此。

      TIFF 也可以进行 jpeg 编码。

      【讨论】:

      • 虽然信息属实,但根本无法回答问题。
      • 请... 它询问为什么要使用多个扩展名,包括“.jfif”,所以我解释一下 jfif 以及它与 jpeg 相比的含义。
      • 8.3 dos 限制可以解释“.jpe”,但这只是问题的一部分。
      • 好的,所以答案是部分相关的,但有一些不相关的信息被压缩(EXIF 在这里并不真正相关)并且缺少与具体 Python 问题的连接。也许我反应过度了,但话又说回来:这只是投反对票;-)
      • 根据原始问题,这只是“主要问题”。我想我需要使用 exit 和 tiff 示例来解释 jfif 不是唯一的 jpeg 编码文件格式。这只是一个反对票,但答案是有效的。
      猜你喜欢
      • 2019-05-23
      • 2023-03-21
      • 2017-10-05
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 2012-10-22
      • 1970-01-01
      • 2016-09-01
      相关资源
      最近更新 更多