2011-07-29 38 views
10

Tôi biết có rất nhiều công cụ cho việc này. Mục tiêu của tôi là học hỏi. Vì vậy, tôi có thể đọc một tập tin JPEG với fopen(), tôi biết đây là một tập tin nhị phân. Vậy thì sao? Tôi biết rằng tôi có thể tìm hiểu các thông số kỹ thuật JPEG. Nhưng nó dường như không cho biết cấu trúc của tệp jpeg nhị phân là gì.Cách viết bộ giải mã tập tin JPEG từ đầu

Tệp này chứa số không và số Làm cách nào tôi có thể chuyển đổi điều này hoặc làm cách nào để biết chuỗi bit nào có nghĩa là gì?

tôi đã đi qua ví dụ này: nano jpeg decoder Nhưng đó là khá khó khăn để đọc mã

Cảm ơn trước

PS: This princeton guy has done a project on this which provides a good reference

+0

Cấu trúc dường như khá loosie-goosie. Tôi muốn xem câu trả lời từ bất kỳ ai có kiến ​​thức sâu về làm việc với định dạng này. –

+0

Liên kết Princetone đã chết. Đoán họ tốt nghiệp ... –

+1

Guy từ Princeton tốt nghiệp và dự án PDF của mình có thể được tìm thấy trên trang web của mình ngay bây giờ: http://www.ctralie.com/PrincetonUGRAD/Projects/JPEG/jpeg.pdf –

Trả lời

20

This trang có rất nhiều thông tin về cách xử lý tệp jpeg. Ngoài ra, bạn có thể xem my own attempt khi viết bộ giải mã jpeg bằng Python.

Tên biến ngắn trong chương trình thường tương ứng trực tiếp với các biến trong tiêu chuẩn. Vì vậy, nếu bạn có chuẩn sẵn sàng, nó sẽ giúp ích rất nhiều. Nó được gọi là ITU-1150 và được cung cấp miễn phí trên Internet.

+1

Bằng cách xử lý mã Python của bạn dưới dạng mã giả , điều này có thể chỉ là những gì OP cần. –

+0

@luser Đó là động lực ban đầu của tôi để viết nó. Tôi muốn thử nghiệm trong Python và sau đó dịch sang C, nhưng tôi không bao giờ có xung quanh làm điều đó. :) – onemasse

+0

Nếu bạn có thể hướng dẫn chúng tôi qua mã với một số bình luận trò chuyện, điều đó sẽ kiếm được tiền thưởng. Có thể chấp nhận, quá, nếu OP bao giờ kiểm tra lại :) –

13

jpeg phức tạp nếu bạn chỉ mới bắt đầu. Bạn cần phải làm việc với các bảng huffmann, có một số loại hàm chuyển đổi cosin rời rạc nghịch đảo nhanh và khả năng diễn giải các bảng lượng tử hóa.

http://en.wikipedia.org/wiki/JPEG khá hữu ích.

Nếu bạn muốn bắt đầu bằng thứ gì đó đơn giản hơn, hãy xem PNG. Định dạng cơ bản là một tiêu đề, theo sau là một loạt các chiều dài biến, khối, và sau đó là một dòng zlib. Giải nén để lại cho bạn các pixel gần như thô, nhưng chúng đã được lọc. Unfiltering rất dễ dàng.

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