2012-07-09 41 views
12

Trong khi làm việc trên một downloader, tôi đã gặp phải những điều sau với mimetypes.guess_extension chức năng của Python:Tại sao các phần mở rộng JPEG khác nhau?

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

tôi biết rằng jpegjpg là phần mở rộng JPEG hợp lệ, nhưng tôi không biết về JPE. Vì vậy, nhìn vào trang web wikipedia đã tiết lộ như sau:

Các phần mở rộng tên tập tin phổ biến nhất cho các tập tin sử dụng nén JPEG được .jpg và .jpeg, mặc dù .jpe, .jfif và .jif cũng được sử dụng

Thậm chí nhiều tiện ích khác mà tôi không biết.

Vì vậy, câu hỏi chính: Tại sao JPEG có quá nhiều tiện ích (hợp lệ) được liên kết với nó?

Trên ghi chú liên quan, tôi muốn biết lý do tại sao Python trả về 'jpe' chứ không phải 'jpg' hoặc 'jpeg' vì tôi thấy chúng được sử dụng nhiều nhất.

Trả lời

7

Có vẻ mimetypes.guess_extension lợi nhuận đầu tiên của tất cả các phần mở rộng có thể:

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

Vì vậy, bạn sẽ nhận được bất cứ là lần đầu tiên trong danh sách được trả về bởi mimetypes.guess_all_extensions, mà hóa ra là:

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

Tôi đoán là tại sao .jpe cũng hợp lệ:

Trong tên tệp phiên bản DOS và phiên bản Windows đầu tiên chỉ có thể có 8 ký tự và 3 ký tự cho phần mở rộng (xem bài viết 8.3 filename trên Wikipedia để biết thêm thông tin). Có thể họ viết tắt JPEG thành .JPE hoặc .jpe - đó là lý do tại sao chúng tôi hiện có .jpe, .jpeg và .jpg.

Thực sự đúng là .jpeg và .jpg phổ biến hơn.

+0

Cảm ơn câu trả lời của bạn :-) –

2

Theo nghĩa hẹp, jpeg là thuật toán nén hình ảnh, không phải định dạng tệp.

JFIF (Định dạng trao đổi tệp JPEG) là định dạng tệp thông thường sử dụng nén jpeg. EXIF ​​(Định dạng tệp hình ảnh có thể thay đổi) là một định dạng khác sử dụng jpeg, được sử dụng trong máy ảnh kỹ thuật số. Hầu hết mọi người có xu hướng nghĩ rằng những định dạng này giống nhau, nhưng đó không phải là trường hợp.

TIFF cũng có thể được mã hóa jpeg.

+6

Trong khi thông tin là đúng, nó không trả lời được câu hỏi nào cả. –

+0

Xin vui lòng ... Nó hỏi tại sao một số phần mở rộng được sử dụng, bao gồm ".jfif", vì vậy tôi giải thích jfif và ý nghĩa của nó so với jpeg. – MatthieuW

+0

Giới hạn 8,3 dos có thể giải thích ".jpe" nhưng đó chỉ là một phần của câu hỏi. – MatthieuW

Các vấn đề liên quan