2012-07-09 59 views
12

雖然上下載的工作中,我遇到了Python的mimetypes.guess_extension功能如下:爲什麼各種JPEG擴展?

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',因爲我看到這些使用得最多。

回答

7

看來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個字符的擴展名(請參閱維基百科上的文章8.3 filename瞭解更多信息)。這可能是因爲他們將JPEG縮略爲.JPE或.jpe - 這就是爲什麼我們現在有.j​​pe,.jpeg和.jpg的原因。

確實如此.jpeg和.jpg更常見。

+0

感謝您的回答:-) – 2012-07-09 16:09:43

2

從嚴格意義上說,jpeg是一種圖像壓縮算法,而不是文件格式。

JFIF(JPEG文件交換格式)是使用jpeg壓縮的常用文件格式。 EXIF(可交換圖像文件格式)是使用jpeg的另一種格式,用於數碼相機。大多數人傾向於認爲這些格式是相同的,但情況並非如此。

TIFF也可以JPEG編碼。

+6

雖然信息是真實的,但它根本不回答問題。 – 2012-07-09 13:49:13

+0

請...它問爲什麼使用幾個擴展名,包括「.jfif」,所以我解釋jfif和它與jpeg相比的含義。 – MatthieuW 2012-07-09 13:54:52

+0

8.3的限制可能會解釋「.jpe」,但這只是問題的一部分。 – MatthieuW 2012-07-09 13:58:02