17

ダウンローダーで作業しているときに、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 が「jpg」や「jpeg」ではなく「jpe」を返す理由を知りたいのですが、これらが最もよく使用されていることがわかります。

4

2 に答える 2

13

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 ファイル名を参照してください)。JPEG を .JPE または .jpe に省略した可能性があります。これが、現在 .jpe、.jpeg、および .jpg がある理由です。

確かに、.jpeg と .jpg の方が一般的です。

于 2012-07-09T13:44:15.133 に答える
2

厳密に言えば、jpeg はファイル形式ではなく、画像圧縮アルゴリズムです。

JFIF (JPEG File Interchange Format) は、jpeg 圧縮を使用する通常のファイル形式です。EXIF (Exchangeable image file format) は、デジタル カメラで使用される jpeg を使用した別の形式です。ほとんどの人は、これらの形式は同じだと考えがちですが、そうではありません。

TIFF は jpeg でエンコードすることもできます。

于 2012-07-09T13:47:46.797 に答える